{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/zgp/anaconda3/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n",
      "  from ._conv import register_converters as _register_converters\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import json\n",
    "import vsum_tools\n",
    "from tabulate import tabulate\n",
    "import h5py\n",
    "import re\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "collect = []\n",
    "def evaluate(dtype, res_f, eval_t='original'):\n",
    "    '''\n",
    "    :eval_t: original, sample\n",
    "    :result: {'fea_x': [pred_scos, gt_score], ...}\n",
    "    '''\n",
    "    result = json.load(open(res_f, encoding='utf-8'))\n",
    "    dataset = h5py.File(f'../../pytorch-vsumm-reinforce/datasets/eccv16_dataset_{dtype}_google_pool5.h5', 'r')\n",
    "\n",
    "    fms = []\n",
    "    if dtype == 'tvsum':\n",
    "        eval_metric = 'avg'    # tvsum\n",
    "    else:\n",
    "        eval_metric = 'max'    # other\n",
    "\n",
    "    table = [[\"ID\", \"F-score\"]]\n",
    "\n",
    "    # h5_res = h5py.File(osp.join(args.save_dir, 'result.h5'), 'w')\n",
    "\n",
    "    for k, v in result.items():\n",
    "        vdo = int(k[4:])\n",
    "        probs, _ = np.array(v)\n",
    "        key = 'video_' + str(vdo)\n",
    "\n",
    "        cps = dataset[key]['change_points'][...]\n",
    "        num_frames = dataset[key]['n_frames'][()]\n",
    "        nfps = dataset[key]['n_frame_per_seg'][...].tolist()\n",
    "        positions = dataset[key]['picks'][...]\n",
    "        user_summary = dataset[key]['user_summary'][...]\n",
    "\n",
    "        machine_summary = vsum_tools.generate_summary(probs, cps, num_frames, nfps, positions)\n",
    "        if eval_t == 'original':\n",
    "            fm, _, _ = vsum_tools.evaluate_summary(machine_summary, user_summary, eval_metric)\n",
    "        elif eval_t == 'sample':\n",
    "            fm, _, _ = vsum_tools.evaluate_sample_summary(machine_summary, user_summary, positions, eval_metric)\n",
    "        fms.append(fm)\n",
    "        collect.append(vdo)\n",
    "\n",
    "        table.append([vdo, \"{:.1%}\".format(fm)])\n",
    "\n",
    "        # h5_res.create_dataset(key + '/score', data=probs)\n",
    "        # h5_res.create_dataset(key + '/machine_summary', data=machine_summary)\n",
    "        # h5_res.create_dataset(key + '/gtscore', data=dataset[key]['gtscore'][...])\n",
    "        # h5_res.create_dataset(key + '/fm', data=fm)\n",
    "\n",
    "    print(tabulate(table))\n",
    "\n",
    "    # h5_res.close()\n",
    "\n",
    "    mean_fm = np.mean(fms)\n",
    "    print(\"Average F-score {:.1%}\".format(mean_fm))\n",
    "\n",
    "    return mean_fm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "fold 1\n",
      "--  -------\n",
      "ID  F-score\n",
      "13  35.3%\n",
      "25  46.6%\n",
      "36  61.7%\n",
      "3   53.4%\n",
      "19  49.4%\n",
      "49  55.4%\n",
      "37  38.3%\n",
      "5   71.7%\n",
      "38  41.4%\n",
      "39  52.4%\n",
      "--  -------\n",
      "Average F-score 50.6%\n",
      "fold 2\n",
      "--  -------\n",
      "ID  F-score\n",
      "18  72.6%\n",
      "15  56.9%\n",
      "46  59.6%\n",
      "9   60.6%\n",
      "43  55.6%\n",
      "32  67.3%\n",
      "6   63.2%\n",
      "34  54.9%\n",
      "29  54.3%\n",
      "11  64.3%\n",
      "--  -------\n",
      "Average F-score 60.9%\n",
      "fold 3\n",
      "--  -------\n",
      "ID  F-score\n",
      "48  50.4%\n",
      "2   49.2%\n",
      "21  50.4%\n",
      "47  46.3%\n",
      "14  53.2%\n",
      "4   64.9%\n",
      "31  66.9%\n",
      "12  62.6%\n",
      "7   52.3%\n",
      "16  67.2%\n",
      "--  -------\n",
      "Average F-score 56.3%\n",
      "fold 4\n",
      "--  -------\n",
      "ID  F-score\n",
      "8   48.3%\n",
      "41  80.6%\n",
      "27  42.2%\n",
      "1   69.4%\n",
      "45  72.7%\n",
      "33  57.1%\n",
      "17  61.6%\n",
      "22  58.0%\n",
      "24  49.8%\n",
      "26  59.4%\n",
      "--  -------\n",
      "Average F-score 59.9%\n",
      "fold 5\n",
      "--  -------\n",
      "ID  F-score\n",
      "35  61.5%\n",
      "23  55.4%\n",
      "50  59.7%\n",
      "42  66.3%\n",
      "44  71.4%\n",
      "30  55.6%\n",
      "28  50.1%\n",
      "20  51.3%\n",
      "40  57.4%\n",
      "10  48.1%\n",
      "--  -------\n",
      "Average F-score 57.7%\n",
      "----  -----------\n",
      "Fold  Ave F-score\n",
      "1     50.6%\n",
      "2     60.9%\n",
      "3     56.3%\n",
      "4     59.9%\n",
      "5     57.7%\n",
      "ave   57.1%\n",
      "----  -----------\n",
      "fold 1\n",
      "--  -------\n",
      "ID  F-score\n",
      "13  44.7%\n",
      "25  47.0%\n",
      "36  59.9%\n",
      "3   53.4%\n",
      "19  52.1%\n",
      "49  55.6%\n",
      "37  36.7%\n",
      "5   71.7%\n",
      "38  52.0%\n",
      "39  52.4%\n",
      "--  -------\n",
      "Average F-score 52.6%\n",
      "fold 2\n",
      "--  -------\n",
      "ID  F-score\n",
      "18  72.6%\n",
      "15  48.4%\n",
      "46  59.6%\n",
      "9   60.6%\n",
      "43  55.6%\n",
      "32  67.3%\n",
      "6   63.2%\n",
      "34  56.9%\n",
      "29  54.3%\n",
      "11  65.4%\n",
      "--  -------\n",
      "Average F-score 60.4%\n",
      "fold 3\n",
      "--  -------\n",
      "ID  F-score\n",
      "48  50.4%\n",
      "2   49.2%\n",
      "21  50.4%\n",
      "47  46.3%\n",
      "14  53.2%\n",
      "4   64.9%\n",
      "31  66.9%\n",
      "12  62.6%\n",
      "7   52.3%\n",
      "16  67.2%\n",
      "--  -------\n",
      "Average F-score 56.3%\n",
      "fold 4\n",
      "--  -------\n",
      "ID  F-score\n",
      "8   47.5%\n",
      "41  81.7%\n",
      "27  45.1%\n",
      "1   69.4%\n",
      "45  72.7%\n",
      "33  57.1%\n",
      "17  64.6%\n",
      "22  58.0%\n",
      "24  49.8%\n",
      "26  59.2%\n",
      "--  -------\n",
      "Average F-score 60.5%\n",
      "fold 5\n",
      "--  -------\n",
      "ID  F-score\n",
      "35  61.5%\n",
      "23  56.5%\n",
      "50  59.7%\n",
      "42  66.3%\n",
      "44  71.4%\n",
      "30  55.6%\n",
      "28  54.4%\n",
      "20  54.0%\n",
      "40  57.4%\n",
      "10  48.1%\n",
      "--  -------\n",
      "Average F-score 58.5%\n",
      "----  -----------\n",
      "Fold  Ave F-score\n",
      "1     52.6%\n",
      "2     60.4%\n",
      "3     56.3%\n",
      "4     60.5%\n",
      "5     58.5%\n",
      "ave   57.7%\n",
      "----  -----------\n",
      "fold 1\n",
      "--  -------\n",
      "ID  F-score\n",
      "13  44.7%\n",
      "25  45.9%\n",
      "36  60.6%\n",
      "3   53.4%\n",
      "19  57.2%\n",
      "49  55.6%\n",
      "37  31.8%\n",
      "5   71.7%\n",
      "38  52.0%\n",
      "39  52.4%\n",
      "--  -------\n",
      "Average F-score 52.5%\n",
      "fold 2\n",
      "--  -------\n",
      "ID  F-score\n",
      "18  72.6%\n",
      "15  48.4%\n",
      "46  57.8%\n",
      "9   60.6%\n",
      "43  55.6%\n",
      "32  67.3%\n",
      "6   63.2%\n",
      "34  54.9%\n",
      "29  54.3%\n",
      "11  65.4%\n",
      "--  -------\n",
      "Average F-score 60.0%\n",
      "fold 3\n",
      "--  -------\n",
      "ID  F-score\n",
      "48  50.4%\n",
      "2   49.2%\n",
      "21  50.4%\n",
      "47  46.3%\n",
      "14  53.2%\n",
      "4   64.9%\n",
      "31  66.9%\n",
      "12  62.6%\n",
      "7   52.3%\n",
      "16  67.2%\n",
      "--  -------\n",
      "Average F-score 56.3%\n",
      "fold 4\n",
      "--  -------\n",
      "ID  F-score\n",
      "8   46.3%\n",
      "41  80.6%\n",
      "27  45.1%\n",
      "1   69.4%\n",
      "45  72.7%\n",
      "33  57.1%\n",
      "17  64.6%\n",
      "22  58.0%\n",
      "24  52.9%\n",
      "26  59.2%\n",
      "--  -------\n",
      "Average F-score 60.6%\n",
      "fold 5\n",
      "--  -------\n",
      "ID  F-score\n",
      "35  61.5%\n",
      "23  56.5%\n",
      "50  59.7%\n",
      "42  66.3%\n",
      "44  71.4%\n",
      "30  55.6%\n",
      "28  54.4%\n",
      "20  57.5%\n",
      "40  57.4%\n",
      "10  48.1%\n",
      "--  -------\n",
      "Average F-score 58.8%\n",
      "----  -----------\n",
      "Fold  Ave F-score\n",
      "1     52.5%\n",
      "2     60.0%\n",
      "3     56.3%\n",
      "4     60.6%\n",
      "5     58.8%\n",
      "ave   57.7%\n",
      "----  -----------\n",
      "fold 1\n",
      "--  -------\n",
      "ID  F-score\n",
      "13  44.7%\n",
      "25  45.9%\n",
      "36  60.6%\n",
      "3   53.4%\n",
      "19  57.2%\n",
      "49  49.6%\n",
      "37  24.7%\n",
      "5   71.7%\n",
      "38  52.0%\n",
      "39  52.4%\n",
      "--  -------\n",
      "Average F-score 51.2%\n",
      "fold 2\n",
      "--  -------\n",
      "ID  F-score\n",
      "18  72.6%\n",
      "15  48.4%\n",
      "46  57.8%\n",
      "9   60.6%\n",
      "43  55.6%\n",
      "32  67.3%\n",
      "6   58.2%\n",
      "34  54.9%\n",
      "29  54.3%\n",
      "11  65.4%\n",
      "--  -------\n",
      "Average F-score 59.5%\n",
      "fold 3\n",
      "--  -------\n",
      "ID  F-score\n",
      "48  50.4%\n",
      "2   49.2%\n",
      "21  50.4%\n",
      "47  46.3%\n",
      "14  53.2%\n",
      "4   64.9%\n",
      "31  66.9%\n",
      "12  62.6%\n",
      "7   52.3%\n",
      "16  67.2%\n",
      "--  -------\n",
      "Average F-score 56.3%\n",
      "fold 4\n",
      "--  -------\n",
      "ID  F-score\n",
      "8   46.3%\n",
      "41  80.6%\n",
      "27  45.1%\n",
      "1   69.4%\n",
      "45  72.7%\n",
      "33  57.1%\n",
      "17  64.6%\n",
      "22  58.0%\n",
      "24  52.9%\n",
      "26  59.2%\n",
      "--  -------\n",
      "Average F-score 60.6%\n",
      "fold 5\n",
      "--  -------\n",
      "ID  F-score\n",
      "35  62.5%\n",
      "23  56.5%\n",
      "50  59.7%\n",
      "42  66.3%\n",
      "44  71.4%\n",
      "30  55.6%\n",
      "28  50.1%\n",
      "20  57.5%\n",
      "40  57.4%\n",
      "10  48.4%\n",
      "--  -------\n",
      "Average F-score 58.5%\n",
      "----  -----------\n",
      "Fold  Ave F-score\n",
      "1     51.2%\n",
      "2     59.5%\n",
      "3     56.3%\n",
      "4     60.6%\n",
      "5     58.5%\n",
      "ave   57.2%\n",
      "----  -----------\n",
      "fold 1\n",
      "--  -------\n",
      "ID  F-score\n",
      "13  44.7%\n",
      "25  45.9%\n",
      "36  60.6%\n",
      "3   53.4%\n",
      "19  62.8%\n",
      "49  49.6%\n",
      "37  24.7%\n",
      "5   71.7%\n",
      "38  52.0%\n",
      "39  52.4%\n",
      "--  -------\n",
      "Average F-score 51.8%\n",
      "fold 2\n",
      "--  -------\n",
      "ID  F-score\n",
      "18  72.6%\n",
      "15  48.4%\n",
      "46  57.8%\n",
      "9   60.6%\n",
      "43  55.6%\n",
      "32  67.3%\n",
      "6   58.2%\n",
      "34  54.9%\n",
      "29  54.3%\n",
      "11  65.4%\n",
      "--  -------\n",
      "Average F-score 59.5%\n",
      "fold 3\n",
      "--  -------\n",
      "ID  F-score\n",
      "48  50.4%\n",
      "2   49.2%\n",
      "21  50.4%\n",
      "47  46.3%\n",
      "14  53.2%\n",
      "4   64.9%\n",
      "31  66.9%\n",
      "12  62.6%\n",
      "7   52.3%\n",
      "16  67.2%\n",
      "--  -------\n",
      "Average F-score 56.3%\n",
      "fold 4\n",
      "--  -------\n",
      "ID  F-score\n",
      "8   46.3%\n",
      "41  80.6%\n",
      "27  45.1%\n",
      "1   69.4%\n",
      "45  72.7%\n",
      "33  57.1%\n",
      "17  64.6%\n",
      "22  58.0%\n",
      "24  52.9%\n",
      "26  53.5%\n",
      "--  -------\n",
      "Average F-score 60.0%\n",
      "fold 5\n",
      "--  -------\n",
      "ID  F-score\n",
      "35  62.5%\n",
      "23  56.5%\n",
      "50  59.7%\n",
      "42  66.3%\n",
      "44  71.4%\n",
      "30  55.6%\n",
      "28  50.1%\n",
      "20  57.5%\n",
      "40  57.4%\n",
      "10  48.4%\n",
      "--  -------\n",
      "Average F-score 58.5%\n",
      "----  -----------\n",
      "Fold  Ave F-score\n",
      "1     51.8%\n",
      "2     59.5%\n",
      "3     56.3%\n",
      "4     60.0%\n",
      "5     58.5%\n",
      "ave   57.2%\n",
      "----  -----------\n",
      "fold 1\n",
      "--  -------\n",
      "ID  F-score\n",
      "13  44.7%\n",
      "25  47.2%\n",
      "36  60.6%\n",
      "3   53.4%\n",
      "19  62.8%\n",
      "49  49.6%\n",
      "37  24.7%\n",
      "5   71.7%\n",
      "38  52.0%\n",
      "39  52.4%\n",
      "--  -------\n",
      "Average F-score 51.9%\n",
      "fold 2\n",
      "--  -------\n",
      "ID  F-score\n",
      "18  72.6%\n",
      "15  48.4%\n",
      "46  57.8%\n",
      "9   60.6%\n",
      "43  55.6%\n",
      "32  67.3%\n",
      "6   58.2%\n",
      "34  54.9%\n",
      "29  54.3%\n",
      "11  65.4%\n",
      "--  -------\n",
      "Average F-score 59.5%\n",
      "fold 3\n",
      "--  -------\n",
      "ID  F-score\n",
      "48  50.4%\n",
      "2   64.8%\n",
      "21  50.4%\n",
      "47  46.3%\n",
      "14  53.2%\n",
      "4   64.9%\n",
      "31  66.9%\n",
      "12  62.6%\n",
      "7   52.3%\n",
      "16  67.2%\n",
      "--  -------\n",
      "Average F-score 57.9%\n",
      "fold 4\n",
      "--  -------\n",
      "ID  F-score\n",
      "8   46.3%\n",
      "41  80.6%\n",
      "27  45.1%\n",
      "1   69.4%\n",
      "45  72.7%\n",
      "33  57.1%\n",
      "17  64.6%\n",
      "22  58.0%\n",
      "24  52.9%\n",
      "26  59.2%\n",
      "--  -------\n",
      "Average F-score 60.6%\n",
      "fold 5\n",
      "--  -------\n",
      "ID  F-score\n",
      "35  62.5%\n",
      "23  56.5%\n",
      "50  59.7%\n",
      "42  66.3%\n",
      "44  71.4%\n",
      "30  55.6%\n",
      "28  50.1%\n",
      "20  57.5%\n",
      "40  57.4%\n",
      "10  48.4%\n",
      "--  -------\n",
      "Average F-score 58.5%\n",
      "----  -----------\n",
      "Fold  Ave F-score\n",
      "1     51.9%\n",
      "2     59.5%\n",
      "3     57.9%\n",
      "4     60.6%\n",
      "5     58.5%\n",
      "ave   57.7%\n",
      "----  -----------\n",
      "fold 1\n",
      "--  -------\n",
      "ID  F-score\n",
      "13  44.7%\n",
      "25  47.2%\n",
      "36  60.6%\n",
      "3   53.4%\n",
      "19  62.8%\n",
      "49  49.6%\n",
      "37  24.7%\n",
      "5   71.7%\n",
      "38  52.0%\n",
      "39  52.4%\n",
      "--  -------\n",
      "Average F-score 51.9%\n",
      "fold 2\n",
      "--  -------\n",
      "ID  F-score\n",
      "18  72.6%\n",
      "15  48.4%\n",
      "46  57.8%\n",
      "9   60.6%\n",
      "43  55.6%\n",
      "32  67.3%\n",
      "6   58.2%\n",
      "34  56.9%\n",
      "29  54.3%\n",
      "11  65.4%\n",
      "--  -------\n",
      "Average F-score 59.7%\n",
      "fold 3\n",
      "--  -------\n",
      "ID  F-score\n",
      "48  50.4%\n",
      "2   49.2%\n",
      "21  52.5%\n",
      "47  46.3%\n",
      "14  53.2%\n",
      "4   64.9%\n",
      "31  66.9%\n",
      "12  62.6%\n",
      "7   52.3%\n",
      "16  67.2%\n",
      "--  -------\n",
      "Average F-score 56.6%\n",
      "fold 4\n",
      "--  -------\n",
      "ID  F-score\n",
      "8   46.3%\n",
      "41  80.6%\n",
      "27  45.1%\n",
      "1   69.4%\n",
      "45  72.7%\n",
      "33  57.1%\n",
      "17  64.6%\n",
      "22  58.0%\n",
      "24  52.9%\n",
      "26  59.2%\n",
      "--  -------\n",
      "Average F-score 60.6%\n",
      "fold 5\n",
      "--  -------\n",
      "ID  F-score\n",
      "35  62.5%\n",
      "23  54.5%\n",
      "50  59.7%\n",
      "42  66.3%\n",
      "44  71.4%\n",
      "30  55.6%\n",
      "28  50.1%\n",
      "20  57.5%\n",
      "40  57.4%\n",
      "10  48.4%\n",
      "--  -------\n",
      "Average F-score 58.3%\n",
      "----  -----------\n",
      "Fold  Ave F-score\n",
      "1     51.9%\n",
      "2     59.7%\n",
      "3     56.6%\n",
      "4     60.6%\n",
      "5     58.3%\n",
      "ave   57.4%\n",
      "----  -----------\n",
      "fold 1\n",
      "--  -------\n",
      "ID  F-score\n",
      "13  44.7%\n",
      "25  47.2%\n",
      "36  60.6%\n",
      "3   53.4%\n",
      "19  62.8%\n",
      "49  49.6%\n",
      "37  24.7%\n",
      "5   71.7%\n",
      "38  52.0%\n",
      "39  52.4%\n",
      "--  -------\n",
      "Average F-score 51.9%\n",
      "fold 2\n",
      "--  -------\n",
      "ID  F-score\n",
      "18  72.6%\n",
      "15  48.4%\n",
      "46  57.8%\n",
      "9   60.6%\n",
      "43  55.6%\n",
      "32  67.3%\n",
      "6   58.2%\n",
      "34  56.9%\n",
      "29  54.3%\n",
      "11  65.4%\n",
      "--  -------\n",
      "Average F-score 59.7%\n",
      "fold 3\n",
      "--  -------\n",
      "ID  F-score\n",
      "48  50.4%\n",
      "2   49.2%\n",
      "21  52.5%\n",
      "47  46.3%\n",
      "14  53.2%\n",
      "4   64.9%\n",
      "31  66.9%\n",
      "12  62.6%\n",
      "7   52.3%\n",
      "16  67.2%\n",
      "--  -------\n",
      "Average F-score 56.6%\n",
      "fold 4\n",
      "--  -------\n",
      "ID  F-score\n",
      "8   46.3%\n",
      "41  80.6%\n",
      "27  45.1%\n",
      "1   69.4%\n",
      "45  72.7%\n",
      "33  56.6%\n",
      "17  64.6%\n",
      "22  58.0%\n",
      "24  52.9%\n",
      "26  59.2%\n",
      "--  -------\n",
      "Average F-score 60.5%\n",
      "fold 5\n",
      "--  -------\n",
      "ID  F-score\n",
      "35  62.5%\n",
      "23  54.5%\n",
      "50  59.7%\n",
      "42  66.3%\n",
      "44  71.4%\n",
      "30  55.6%\n",
      "28  50.1%\n",
      "20  57.5%\n",
      "40  57.4%\n",
      "10  48.4%\n",
      "--  -------\n",
      "Average F-score 58.3%\n",
      "----  -----------\n",
      "Fold  Ave F-score\n",
      "1     51.9%\n",
      "2     59.7%\n",
      "3     56.6%\n",
      "4     60.5%\n",
      "5     58.3%\n",
      "ave   57.4%\n",
      "----  -----------\n",
      "fold 1\n",
      "--  -------\n",
      "ID  F-score\n",
      "13  44.7%\n",
      "25  47.2%\n",
      "36  60.6%\n",
      "3   53.4%\n",
      "19  62.8%\n",
      "49  49.6%\n",
      "37  24.7%\n",
      "5   71.7%\n",
      "38  52.0%\n",
      "39  52.4%\n",
      "--  -------\n",
      "Average F-score 51.9%\n",
      "fold 2\n",
      "--  -------\n",
      "ID  F-score\n",
      "18  72.6%\n",
      "15  48.4%\n",
      "46  57.8%\n",
      "9   60.6%\n",
      "43  55.6%\n",
      "32  67.3%\n",
      "6   58.2%\n",
      "34  56.9%\n",
      "29  54.3%\n",
      "11  65.4%\n",
      "--  -------\n",
      "Average F-score 59.7%\n",
      "fold 3\n",
      "--  -------\n",
      "ID  F-score\n",
      "48  50.4%\n",
      "2   49.2%\n",
      "21  52.5%\n",
      "47  46.3%\n",
      "14  53.2%\n",
      "4   64.9%\n",
      "31  66.9%\n",
      "12  62.6%\n",
      "7   52.3%\n",
      "16  67.2%\n",
      "--  -------\n",
      "Average F-score 56.6%\n",
      "fold 4\n",
      "--  -------\n",
      "ID  F-score\n",
      "8   46.3%\n",
      "41  80.6%\n",
      "27  45.1%\n",
      "1   69.4%\n",
      "45  72.7%\n",
      "33  57.1%\n",
      "17  64.6%\n",
      "22  58.0%\n",
      "24  52.9%\n",
      "26  59.2%\n",
      "--  -------\n",
      "Average F-score 60.6%\n",
      "fold 5\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "--  -------\n",
      "ID  F-score\n",
      "35  62.5%\n",
      "23  54.5%\n",
      "50  59.7%\n",
      "42  66.3%\n",
      "44  71.4%\n",
      "30  55.6%\n",
      "28  50.1%\n",
      "20  57.5%\n",
      "40  57.4%\n",
      "10  48.4%\n",
      "--  -------\n",
      "Average F-score 58.3%\n",
      "----  -----------\n",
      "Fold  Ave F-score\n",
      "1     51.9%\n",
      "2     59.7%\n",
      "3     56.6%\n",
      "4     60.6%\n",
      "5     58.3%\n",
      "ave   57.4%\n",
      "----  -----------\n",
      "fold 1\n",
      "--  -------\n",
      "ID  F-score\n",
      "13  44.7%\n",
      "25  47.2%\n",
      "36  60.6%\n",
      "3   53.4%\n",
      "19  62.8%\n",
      "49  49.6%\n",
      "37  24.7%\n",
      "5   71.7%\n",
      "38  52.0%\n",
      "39  52.4%\n",
      "--  -------\n",
      "Average F-score 51.9%\n",
      "fold 2\n",
      "--  -------\n",
      "ID  F-score\n",
      "18  72.6%\n",
      "15  48.4%\n",
      "46  57.8%\n",
      "9   60.6%\n",
      "43  55.6%\n",
      "32  67.3%\n",
      "6   63.2%\n",
      "34  56.9%\n",
      "29  54.3%\n",
      "11  65.4%\n",
      "--  -------\n",
      "Average F-score 60.2%\n",
      "fold 3\n",
      "--  -------\n",
      "ID  F-score\n",
      "48  50.4%\n",
      "2   49.2%\n",
      "21  52.5%\n",
      "47  46.3%\n",
      "14  53.2%\n",
      "4   64.9%\n",
      "31  66.9%\n",
      "12  62.6%\n",
      "7   52.3%\n",
      "16  67.2%\n",
      "--  -------\n",
      "Average F-score 56.6%\n",
      "fold 4\n",
      "--  -------\n",
      "ID  F-score\n",
      "8   46.3%\n",
      "41  80.6%\n",
      "27  45.1%\n",
      "1   69.4%\n",
      "45  72.7%\n",
      "33  57.1%\n",
      "17  64.6%\n",
      "22  58.0%\n",
      "24  52.9%\n",
      "26  59.2%\n",
      "--  -------\n",
      "Average F-score 60.6%\n",
      "fold 5\n",
      "--  -------\n",
      "ID  F-score\n",
      "35  62.5%\n",
      "23  54.5%\n",
      "50  59.7%\n",
      "42  66.3%\n",
      "44  71.4%\n",
      "30  55.6%\n",
      "28  50.1%\n",
      "20  57.5%\n",
      "40  57.4%\n",
      "10  48.4%\n",
      "--  -------\n",
      "Average F-score 58.3%\n",
      "----  -----------\n",
      "Fold  Ave F-score\n",
      "1     51.9%\n",
      "2     60.2%\n",
      "3     56.6%\n",
      "4     60.6%\n",
      "5     58.3%\n",
      "ave   57.5%\n",
      "----  -----------\n"
     ]
    }
   ],
   "source": [
    "root = '../../data/results/tvsum_aug_sup_hs2048_2018'\n",
    "max_epk = 10\n",
    "\n",
    "data_t = None\n",
    "ck_lst = []\n",
    "if re.search('summe', root) is not None:\n",
    "    data_t = 'summe'\n",
    "    ck_lst = list(range(1, 26))\n",
    "elif re.search('tvsum', root) is not None:\n",
    "    data_t = 'tvsum'\n",
    "    ck_lst = list(range(1, 51))\n",
    "else:\n",
    "    print('dataset type error')\n",
    "\n",
    "single = {1: [], 2: [], 3: [], 4: [], 5: [], 6: []}\n",
    "\n",
    "for epk in range(0, max_epk):\n",
    "    collect = []\n",
    "    table = [[\"Fold\", \"Ave F-score\"]]\n",
    "    ave = 0\n",
    "    for i in [1, 2, 3, 4, 5]:\n",
    "        print('fold', i)\n",
    "        res_f = f'{root}/fold{i}/score/epoch_{epk}.json'\n",
    "        # evaluate('summe', res_f)\n",
    "        mean_f = evaluate(data_t, res_f)  # , eval_t='sample'\n",
    "        single[i].append(mean_f)\n",
    "        table.append([i, f\"{mean_f:.1%}\"])\n",
    "        ave += mean_f\n",
    "    ave /= 5\n",
    "    table.append(['ave', f\"{ave:.1%}\"])\n",
    "    single[6].append(ave)\n",
    "    print(tabulate(table))\n",
    "\n",
    "    assert sorted(collect) == ck_lst\n",
    "    # print(sorted(collect))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<function axes at 0x7f181eb56f28>\n"
     ]
    },
    {
     "data": {
      "image/png": "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a2trAWK6TN1xxx2UlJTwi1/8gmAw2GsA+VCK1CNSr54is1edShev/ih0iIiMHM8AN1mWdbVlWW7g69gn5+8mKPtNy7LyLcsqA1YNRgUsy5pjWdZVlmWlAz7sgd+RS1iPAQ9ZlnVGeBaq88LjNn4LnGlZ1mcsy3JZlnUPcA7wQrz3MMbUAK8A/9uyrFzLshyWZc2yLOvywfgeRESG2/bt22lpaem1P7KS+MKFC7v2ud1uvvjFL1JVVcX69et57LHH8Hg8fPazn+31fKfTCQysJWEgIvWIt8J5IBDgnXfeAezuYoNNoUNEZIQwxuwB7gNWA8exx0SsMMZ0xin+PewuTIewT+D/a5CqkQ78KPz+tdhdnv4u/Nj/wQ47rwDN2LNPZYbHddyMHZJOAN8AbjbGHO/jff4YSMOeeasB+DUQv71fRGSEa2pq6rX+xtatW3niiSeYMGFCr2llV65cidPp5IEHHuDQoUN85jOfiTsmpLDQno8j3sDuUxFZR+Spp55i06ZNMY/927/9GwcPHmT58uUxA8YHi2vQX1FERPpkjJnex2PPAc/19zxjTBv2iXu0f+njdeOvJtW73IdA3E7Fxpgg9tS2P4jz2DvA4gTPuyLOvibgz8KbiMiotmzZMh577DE2b97MJZdcQk1NDU8//TShUIif/exn5ObmxpSfOnUqN910E+vWrQNI2LXqyiuvxOFw8M1vfpNdu3aRn58PwLe+9a1TqqfH4+GXv/wld911F5dffjl33XUXU6dOZdu2bbzyyitMmjSp18xag0UtHSIiIiIip2HGjBm8++675Ofn88gjj/DMM8+waNEifvvb33LPPffEfc4XvvAFwJ4VKlF3prPPPpvHH3+cSZMm8X//7//lwQcf5MEHHzytut56661s3LiRG2+8kZdffpkf//jHfPLJJ3z5y19m27ZtzJw587RePxHLGNN/KRERERGR8enrwD9iz7oX4/Dhw8yYMYP777+fX/3qV0m96He/+12+973v8dhjj/Enf/Ing1PTkecA9npMaukQERERERlOLS0tPPLIIxQUFHDvvfemujrDQmM6RERERESGwYsvvsj27dtZv349x44d48c//jFZWVmprtawUOgQEREREenboIxHePbZZ3n88ccpKSnhm9/8Jn/5l385GC87KoyZMR0TJ04006dPT3U1RERERGQM+dSnPsVf/MVfkJmZmeqqjEa7gHkwhlo6pk+fztatW1NdDRERERERgQDwRuSOBpKLiIiIiMhg6wR+GbkzZlo6RERERESGg8/nC2VkZHSmuh4jUAi7hcMF/BHwQeQBhQ4RERERkSR8//vfr/yHf/iHf0l1PUagAHAYu1tVR/QDY2Yg+ZIlS4zGdIiIiIjIULMsa5sxZkmq6zGaaEyHiIiIiIgMKYUOEREREREZUgodIiIiIiIypBQ6RERERERkSCl0iIiIiIjIkFLoEBERERGRIaXQISIiIiIiQ0qhQ0REREREhpRCh4iIiIiIDCmFDhERERERGVIKHSIiIiIiMqQUOk5HZye0tqa6FiIiIiIiI5pCx+n4xS/w5kwm4HDjLT0T3nsv1TUSERERERlxFDqStHPnTh5//HFOnDjBq3/zbVaZz5Nt/h9frrmal5deztNz5rDr61+HvXtTXVURERERkRHBMsakug6DYsmSJWbr1q1D/j51dXUUFxcDELDc5NJEO1lk0kYzubgIUg8UAZx1Ftx6K9x2G1xwATiU8URERERGO8uythljlqS6HqOJzoKTFAkcAL5zFrHK8TCZtLGK1fjIBMKBA2D3bvinf4KLLoIpU2DlSnjxRfD5hr/iIiIiIiIpopaO03HwIN4V95Kx5wN8cxbgefw/YNcuWLsWXn4Z2tvjPy87G66/3m4FuekmKCgY3nqLiIiIyClTS0fyFDqGSns7vPYaPP88rF8P9fXxyzmdcNlldgC59VaYMWN46ykiIiIiSVHoSJ5Cx3AIBmHTJrsFZO3avgeZn3dedwBZtAgsa/jqKSIiIiL9UuhInkJHKuzebbeArF1rh5FEysq6A8jll0Na2vDVUURERETiUuhInkJHqtXW2t2v1q61u2N1dMQvl5sLN95oB5AbboAJE4a3niIiIiICKHScCoWOkcTrtQegr10LL7wADQ3xy7ndcOWVdgC55Ra7RUREREREhoVCR/IUOkaqQADefrt7HMjhw4nLLl5srwVy660wd67GgYiIiIgMIYWO5Cl0jAbGwM6d3QFk27bEZWfM6B4Hcuml4HINXz1FRERExgGFjuQpdIxGFRWwbp0dQN54w24ViaegAG6+2Q4g111nrw8iw6PxIN6n7yWj5QN8OQvw3P0k5M1Mda1Sp/Eg3mc+03087nlqfB8P6abPSix9ViQRfVZipfizotCRPF0GH43Ky+GrX7W3pibYsMGeDWvDBmhu7i538iT853/aW3o6LF9ud8NasQJKSlJX/5Em2An+Vnvr9EKgtft+z63Ta3+NVybqud6TXh569ZusfucNVl36Ex48MR9Pemuqv9OU8XZk89Br3wofj9U8GLgNz1d2qCvgeBYKQOVbeH/9OR564Sv6rITFflZ+woMnF+Ip8IAzA1wZ9ldnun3bFb7tjLodKdPzfsxzBvgaDpc+o9GMgWCHvQV8EPRBoCP8Nd79qHIxz+l5v8drRB6LlAs/5m0J8tCrf6fPSljMZ+Wyh3mQe/F8aXOqqyV9UEvHWNLZCW++2d0Nq6oqfjnLggsv7O6GddZZw1rNUzLQYBAJBQMIBl1bKEFLUZJ21tjbdXNg1zEH1z26kY5ABWnOQjZ88RpaOkLMKoS5kwfl7Ua8nTWwtQJuOTfB8bDymbXkeuZetxJKLwGHM9VVlqEW6ICjr7Pj5Z+z+e3XuPMsrz4r2J+Vdw/Dp84bYb87LEf84NJvqIkKMaccjMLPcabZf7NMKPEJfY+T86RCQeR2X6/RdTvB7JJDaGcNvLQbvnDBCPvZSJEd1fZn5e75cY7Hn15Hy/W/ZtasWcydO3fI66KWjuSppWMsSUuDa6+1t4cftsd+RALIzp3d5YyBP/zB3v7X/4I5c7oDyNKl9irpp6LxIN7/uYcM74f4ss7Gc+33ICN/RAWDoVTigXmL7NuLp2TyF5e9yep3/pxVl/6EC6Zm4klvpd6b2joOpxIPfP4C+3b843GC+son4OknIKsYZt8GZ9wB5VfaJxoyNvjb4PBLsHcNHHwBOpuZ3AIrF9sP67Nif1a+dJF9e0QdDxOCQLu9pYi3I5sMtw+fP2NcXtUv8cDfXGnfHlE/GykyOQf+7GL7dszxuOxhLliwCM+tt1JfX5/aSkpCaukYLw4e7A4gb78NoVD8csXFdver226Dq6+GzMz+X7vxAOx5Fu/v/zcPvfT1rl+IDy7/wej4I2E5Ic0D7mx7c2V333Zndz/Wc3/0Yz2f21aP9/kvk+HdoX7ZEA6knybD+wE+qxhPWgt0Nscvm54Hs1bAGXfCtGvBPYCfQRlZOprg4Iuwbw0c2pD4pNVTCuVX4T34Phm+ffqsQGy/fc95eG77KWRPSu7K/AC76/TZ5SfYkbKLPTuqoaIR5k3O4u9++0es2fk5rpuzmlWX/Aa300eTD2YWpOjqvjOt71YaZwa4olt2BqM7XPg5rTV413yejBb9XQF6j3HRmI4RT6FjPDpxAl580Q4gL70EbW3xy2Vl2QPQb73VHpBeWNj9WDho7HjtcQ7u282ymfGbfr2docH54+BwxT+573nin0wwiGyR5nsZPkE/VLwJ+38D+56DtmPxy7mzYcaNdgCZeSOk5QxrNSUJbcfhwDo7aBx9ze4SGU/udPvf88w7YfJSuwuPjEyhQDiIDPa4hb7DU11DG8VZnQR8beT+fTPt/iwy3W00/zAXV2YOONOpb3dTlJc9ON28BjzeJU0/r9JFoSN5Ch3jXXs7vP66HUDWrYO6uvjlHA64bgksL4IJh6HxIwDqWqA4fB7YPagr3NJx3Y/xTD2L+jY3RUUFCgYSXygI1X+wT1b3/QZajsYv50y3Wz7OvBNm3WJ33ZPU8lbD/uftf7uK34MJxi9XcLb97zb7DiheoM+yDIj3Z0t56Jk7Wf32A/ZA4bvXaKCwjBgKHclT6JBuoRBs3mzPhLV2LezZAwXAecB8oDzB85xpMP16KLsc79an7DEdavqVU2EMHNsWDiBroGFf/HIOlz3244w77bEg2ZqNbdg0HbbD4b41dlgkwd+Q4oX2v88Zd0Dh2cNZQxkrUtx9RqQvCh3JU+iQ3poOw95nYcd/QtOu+GUCwB5gB9AwGa4Pr4h+5ZX2gHaR02UMnPjIHoC8/zdQ/2GCghZMuTR8Jf12yJ06rNUcF07s7m6JqtueuNzki+x/hzPugAkzhq9+IiLDTKEjeQodYosEjb3PQu2WBIWccLwQ3jgJOwLg613C68glw7Thm1iO55+/bQeRfHWDkUHQsM8e/7FvDdS+l7jcpPPtbjxn3gn5Zwxf/cYSY6B+h32s966Bk5/EL2c5oPwK+3ifcbs9MFxEZBxQ6EieQsd41nwE9jwLe59JHDQcbph+LZx5d7gffR60tsIrr8Dzz7Pj+ec52NzMMmA7GTzJSp7kfO5iI/fxK9rxccb06cxdtsxeG2TpUpg3D9zuYf1WZYxproD94QBS+TYJu/hMnGdfdT/jTpg4V2MJ+mJCUPNed4tG08H45RxumHaNfVxn3QpZE4e3niIiI4BCR/IUOsab5iOw99ew55nEV4u7gsZd9klFRl7Cl6urrqZ43z5Yu5bAv/6EXJppJ4tM2mgmFxdB6oGi6CdlZsLixd0h5MILoaxsML9LGU9aj8GBtfYV+YrfJZ7mM/+M7haQkiUKIGAfq6p3wl3YngNvggVFXZkw4wY7aMy8GdInDG89RURGGIWO5Cl0jAfNR7u7TtUkmPnD4bJnBppz9ynPDOQ9dykP7b6T1aEHWGWt5sH0H+MJNEJgAHO9l5Z2B5ClS2HJEsjOTroOMs75GuDAevtK/eGXEq8gnFPe3QJSevH4Wg092AlHX7eP0f7nof14/HJpuXbAOPNOmH6dPYuciIgACh2nQqFjrGo+ardo7H0WajbFL+Nw2d0kzrwbZt96+lOQHjyId8W9ZOz5AN+cBXjWP2WHifffh02b7JmxNm2CI0f6fy2n0+6GFR1E5syxp+4VGYhOLxz6rX1yffBF8CdYtjerpMdq6GOw65+/DQ6/bHedOviCvXhfPBmF9u+CM+6EqVfbi5yJiEgvCh3JU+gYS5orYF+461RfQWPq8nCLxq2QWTC8dQSorbUDSCSEvPeePU6kPxMmwAUXdIeQpUthovqTywAEfHD4FXsWrAPr7BaReDLy7Za+2XfYXQxdGcNbz8HU0dxjVfAEi4BmT7Zn/TrzTihbZv+OEBGRPil0JE+hY7Rrqeweo1Hzh/hlIkHjzLvsK7qpCBp9CQbh449jW0M+/tieQac/s2bFjg2ZP19T9krfIquh7wuPY2hLsCCm2wMzb7JbQGbcaC9gOdK1n+heFfzIq/2vCn7GHVB6oVZZFpHRyRg4eRIKC4f9rRU6kqfQMRpFgsbeZ6H63fhlLCdMiw4aw/+BPC3NzbBlS3cI2bw58Wrp0dLTYdGi2G5Z06Zp0LDEFwran6Gu1dAr4pdzZcC068IzNq0YWauhe2uiVgV/s49Vwc/qDhrFC/WZEJHRyeuF3/0Onn4a77MbyPA34ztnsd2le+bwLR6p0JE8hY7RoqWqu+tUX0Fj6tV216nRGDT6YgwcPhwbQrZvh84EV3KjlZTEhpDzz4ecnCGvsowyxsCxrfZMTvvWQOP++OUcLii/yu6ONOvW1KyG3nTYbqXZuyb8+yDB7/GiBeHF+u7UquAiMjoZA598Ahs2sOOZZ3h32zbuDgZjp+m33uVPp/+e5n//ETNmzGDu3LlDXi2FjuQpdIxkLVX2yc+eZ6B6Y/wylhOmXhUeDH7b+Jozv6MDduyI7ZZ1MMHaAtEsC849NzaInHOOPXhdBOw/csd32a0f+9bA8Z3xy1kOezX0MyKroZcPXZ1O7ulukTm2LXG5yReFZ+a6A/KG76qfiMig8Xrh9ddhwwZ46aWuCWjqgOJwkQDO2Gn6nfm4Ah3U19dTVFSU8KUHi0JH8hQ6RhpvtX31cu8zULWRuFcwLac9y86cu+0TnfEUNPpTX997kHpzc//P83jsQerRQaQkBVewZWRq2NcdQBItpAkw6YLuLkz5s0/vPY2B+g+7g8aJj+KXsxxQdrn9nrNvh5wpp/e+IiLDzRh7LOeGDfb29tvg9ycuP28e3upmHjr5FVabB1jl+A8ePOvXeD5KsCzAEFDoSJ5Cx0jQFTSetRfqihs0HHaXjjl3hYPG0Kf4MSEUgt27u1tDNm+GnTvt/f2ZPj02hCxcCBmjeDYjGRzNR7u7NiX6vAIUndcdQArPHdgYChOyQ83eNfZMW40H4pdzuO0xW7PvsKe41e8DERltWlq6WzM2bICKBGPqwO4Sfc01cMMNcP319oLC8abp15iOEU2hI1W8Nd1dp/oMGlfag8HPuB2yinuXkeR5vbB1a3dryKZN9jS+/XG7YcGC2NmyZs7UgNzxrPVYeBD3b/pZDf3M7sUISxbH/syEgvbvgH1rYN9z4K2M/xquTJh+vT1GY8ZNkJE3+N+PiMhQMQZ27bK7S23YAO+803drxnnn2SHjhhvg4ovtv8EjiEJH8oY0dFiWdT3w74ATeMwY86M4Ze4Gvot91r3DGPOZ8P77gW+Fi/3AGPN4X+81KkJHa21316nKt0kcNK6wx2goaAwPY+wrLNGD1LdtA5+v/+dOnNi9ZsiFF9qD1PN0MjgutZ+Eg5HV0F9OvBp6dineNhcZoRp8Vgme9DboOBm/bFqOvSr4GXfCjOu1KriIjC7NzfDaa91jMyoTXFQByM2Nbc2YMrK7iip0JG/IQodlWU5gL3ANUAlsAe41xnwcVeYM4BngKmNMg2VZxcaYOsuyCoCtwBLsM/NtwGJjTIIVvUZw6GittU9C9jwDlW+RMGiUXW6P0TjjDgWNkcDvhw8/jB2kvm/fwJ579tlwzjl43/2QjLojKWn2lRTrbIGD4dXQD70I/u7FL70d2Tz02rdY/c6fs+rSn/Dg8h/gSY9aHDOjwJ4V68w77fV1tCq4iIwWxthdmCNdpjZuhECCFmCw19aKtGZcdNGIa83oi0JH8oYydFwEfNcYc134/jcBjDH/GFXmn4G9xpjHejz3XuAKY8yXwvd/BrxpjHkq0fuNqNDReszuKrH3Waj4PYmDxrJwi8YdqZl2U5Jz4oQ9MD26RaSxMW5RL9k8xLdYzZ+zip/w4ISH8Tz6f+yrOPkjaI0HGXr+dnuhvn1r2PH75/jwqJeVzx7BFzhKusvJrz59CaXFeSy74dP274Lyy7UquIiMHk1Nsa0ZVVWJy06YENuaUVo6fPUcZAodyRvKv2xTgOhRQZXA0h5lzgSwLGsjdhes7xpjXkrw3F7tbJZlrQRWAkydOnXQKn5KWo/ZVzX3hls0TLyBypZ9QnHmXeGgMWnYqymnobCw+4oM2IPR9+2LDSE7drAzGOQD2vgJn8XH+/w7V7Cw6e8pveceljmddjesyOssWAAOrQY9prkzYfYtMPsWJi/4IbPWXMeu2idZ/c4qVl26mpuXnkP73a9BsS48iMgoYIzdEyDSmvHuu323ZixcaAeMSGuGSxdVxquh/JePN7q25yV/F3AGcAVQBrxtWdbcAT4XY8yjwKNgt3ScTmVPSe17eJ++j4zOQ/j8GXjSvXEKWXaLRqTrlILG2OFwwJw59vbHf2zva2uj5PXXuf1P/5Jdx55kNatYxU+4mUzaaYVg0G5u3rgRvvUte1reyC/ja69VK8gYVzy5DO5bz4Pue/nhjd/Gl7MAzz1r8eQpcIjICNbYGNuaUV2duGxenv337IYb4LrrYPLk4aunjGhDGToqgeiVssqAnj+llcAmY4wfOGRZ1h7sEFKJHUSin/vmkNU0CTt37mT79u3cfNNNbP/ucp7c/nme2L6Ae+Zv4b7F/4/Gdh/nlsDc86O6Tnn0gRs3srIoXrEC3j2XB1fcyw/3fBtf+Zl4bv48nk2b7Fmzoh07Bo8/bm8OR2wryMKFagUZi/Jm4vmSPZe8J8VVERGJyxh78d3o1oxgMHH5RYu6/3YtXarWDIlrKMd0uLAHkl8NVGEPJP+MMeajqDLXYw8uv9+yrInA+8ACugePLwoX3Y49kDzBFC/DN6ajrq6O4mJ7oHfgX9zk/n0T7f4sMt1tNP9wAq7l/0p93hUUzZg75HWRUaiuDl55xf4l/vLL9jiRREpK7KtEkVaQgoLhq6eIiIwvjY3w6qvdrRk1NYnL5ufHtmZMGn+9ODSmI3lDFkWNMQHLsh4AXsYer/FLY8xHlmV9H9hqjFkXfuxay7I+BoLA3xhjTgBYlvUQdlAB+H5fgWM4RQIHgC/rbFZdutrum33Zw/hyF+FZ+ABapksSKi6G++6zt2DQbvmIXEnassW+uhRx7Bj853/am8NhXz2KXElatEitICIicupCIfjgg+6Q8Yc/9N2asXhx99+gCy5Qa4YkTYsDno7Gg3ifvpeMlg/CfbOfgjxNiyqnqL4+thXk+PHEZYuLY1tBCguHr54iIjI6NTR0/5156SX74lYiBQWxrRklGnsWTS0dyVPoEBmJgkF7gcJIK8h778W2gkRzOOyrTpErUIsXqxVERETs1oy9rPrmAAAgAElEQVT33+/+W7Jpk70vkSVLYlsznM7hq+soo9CRPIUOkdHg+PHYVpD6+sRli4rsq1LXX29/nThx+OopIiKpdfJk7N+LvlozCgtjW82LtTjxQCl0JE+hQ2S0CYViW0E2b07cCmJZcP753VeulizRlSsRkbEkFILt22P/JiRqzdDfhEGj0JE8hQ6R0e7ECfuq1ksv2VtdXeKyEyfG9tEt0rQHIiKjTuT3fqQ1o7/f+9GtGfq9PygUOpKn0CEyliTTf9eyYvvvnn++rniJDLdgEGprobISKirggw/wPvLfZJyswpdfimfFlTBhQqprmRpNTXjXv0FGQ7WOBdjHY93vyGiowUcGHuItSIz9u73nOD/9bh90Ch3JU+gQGctOnoydd72/vr3RrSDq2ytyekIhe/xVRUX3FgkXka26mp2BAO8CnwK2k8GTrOQJFnAPW/gs/w/wUQaMl9WfdgAVwDyy+Dv+iDV8jmv4N/6KtTjw0Q7j5njsBF4CvkA/PxuRsXyR1gyN5RtyCh3JU+gQGS+i52TfsMGek72vVpCec7LrSplIN2PsLi49Q0R0uKishM7Ofl+qDohE/ABOcmmmnSwyaaOZXFwEqYdxswZU5HgkOhbAuDkeff9sTMD1vQepv/BCipYv16yFw0yhI3kKHSLjVUNDbCtIbW3ispqvXcYTY6Cpqe8WispKaG8fnPebOBHKy6G8HO/b7/NQ41dZbVaxylrNg8U/x/PNVYPzPqOM9x9X81Ddn+pYhMUcD8fDPHjWGjwfbU51tcYthY7kKXSIiN3isWNHbCvIQFemXbpUrSAyuni9iVsnIre9CfrLJys/vytQUFbWfTt6X0ZGd/mDB/GuuJeMPR/gm7MAz/qnYOY4XXRWxyKWjseIotCRPIUOEemtsTG2FaSmJnHZ/PzuVpDrr1criKRWe3vi1onI1tQ0OO+Vk9M7RPQMF9nZg/NeIjKiKHQkT6FDRPpmjN0K8tJLdgjZuLHvVpBFi2JbQVyu4aurjG0dHVBV1XcLxYkTg/NeWVl9t1CUl0Nu7uC8l4iMOgodyVPoEJHkNDXBa691d8Wqrk5cNi8vdizI5MnDV08ZXfx++2eprxaKvtYiSEZ6euKuTpHb+fn2hAoiInEodCRPoUNETp0xsHNndwDZuBECgbhFvWSTgQ+fIxtPZnD8zrQSCuFtd5IRatWxAPt4tDnIMG3htQdaT+/1XC47PCRqnSgvtwduK1CIyGlQ6EieQoeIDJ6mJnj9ddiwgZ3r1rG1ro5biD+/fCc+ZjI+5toHe+2Bj4BLEqw90ATj5njsADYDd5Lkz4bDAaWliVsnysvtMUXjOcSJyLBQ6EieQoeIDIm6Y8corquDDRsI/O3fk0uT1h5Aaw/AANYeuOMW6gsLKZozJzZcTJ6sMUIiMiIodCRPv71FZEgUl5TYV53nzcP3+BpW7X6Y1aEHWOV4GN+ZC/Fsfn1cnGBHRE6yfUuvZtXe3scCxkfggO5jAT2Px3/gO2sRnjVrxs2xEBEZL9TSISJDT/PLd9OxiKXjISKjkFo6kqfQISIiIiKSBIWO5Gm0nYiIiIiIDCmFDhERERERGVIKHSIiIiIiMqQUOkREREREZEgpdIiIiIiIyJBS6BARERERkSGl0CEiIiIiIkNKoUNERERERIaUQoeIiIiIiAwphQ4RERERERlSCh0iIiIiIjKkFDpERERERGRIKXSIiIiIiMiQUugQEREREZEhpdAhIiIiIiJDSqFDRERERESGlEKHiIiIiIgMKYUOEREREREZUgodIiIiIiIypFyproDImNTUgvfdPWSE2vE5s/BcejZ4slJdKxEREZGUUOgQOV2dfmhqYeeWrex8/wOum7uQ7R/t48k3ZvLEm8f51CUZLJu7hqzcdBYtWMDcBfMhJws82ZCVCU41OIqIiMjYZhljUl2HQbFkyRKzdevWVFdDxrqOTmjyQnMLNHvt274OAOoaGyjOywcgEITcT11Ce4eTzPQgzb/eiMsJ9U2NFE3Ii33N7Ey7FcSTBdnhMOLJBKdzuL87ERERGQDLsrYZY5akuh6jiVo6ROIxJipghENGk9fel0AkcAD4Oh2sWlHN6vWlrFpRha/TgScz1DtwALS229uxE7H7szLCYSQ7NpS4FEZERERkdFHoEDHGbq2ItFw0e6Gpxe42NRAOC3I8kOuBCR7IzcHjdPCgZw8//NxhfG4PngsXQMiAtxW8bd1buy/x67b57K3uZOz+zPTYIBIJI259nEVERGRk0lmKjC/G2Cf6MQHDC/6BBgxHVLgIb54se38PnmsX2l+jd+blxBYKBKG1LTaIeNugrT1xHdo77K2+RxjJSOsdRjzZCiMiIiKScjobkbHLGLulINJy0RwOGf7AwJ7vDAeM3JzukOHJAssavDq6nDAhx96iBUNxwkirHUYSDcPyddrb8YbY/elpvYOIJwvS3IP3fYiIiIj0QaFDxgZj7HERzd7YkBEIDuz5Lmd3y8WEHPtrdubgBoxkdAUeT+z+UMj+PiMhJBJIWtvtYxBPR6e9nWiM3Z/m7h1EImEkVd+3iIiIjEkKHTL6GGOfaMcEjFYIDjBguF1RASPckpGVMTpOtB0OyMm2N4q694dCdqtOrzDSZo8liafTDyeb7C2a29U7iHiy7BaT0XCMREREZMRR6JCRLWTsE+emqClqW7x296OBcLu6Wy4iISNzlASMZDgc3eGAid37Q+ExLD0HsHvb7KASjz8ADc32Fs3l6tFNK7xlpI+94ykiIiKDSqFDRo5QCFraYtfAaGlNfHLcU5q7u+UiMgZjvJ8QOyy7m1h2JpRE7Y8MqO8ZRLytiQNdIACNzfYWzemMP2Ykc5wfexEREemi0CGpEQzZJ7jRC+01tyYel9BTelrUDFLhkKHuPwNnWfZq6FmZUFzYvT8yfXC8MJJofEwwaLdENbXE7nc67Kl8c7LAnYb30EkyTDs+RyaeBVPtQDge+TrwfnCUjJCOBRB7PFzZeC49y/65ERGRMUWhQ4ZeMGi3WESvgeFtG3jAyEiPHzBk8FmW3f0sMwOKCrr3RxZLjA4hkduJZgMLhrrG3XjbHTz01FRWr5/CqhVVPHjvXjyZA2zBGmN0LGL1Oh6t7+MpdNuf+8x0+2tGOmRkdN93OXWBQURklFHokMHT1o737U/ICLTiIx3P5Ozw4ObWxNO89pSZ0XsdDAWM1LOs7pO/id0rr2OMPSA9zpiRnXt2s3XfHm658BJ2HTnKv6/NosP/Dv+2tpQ5Za8wMTeHmZMmM3f6zNR9X8Nox8H9fHTkEFcvuIB/Wxui09/Avz6/kxuWNHCkroZ8z/g5HjsO7mfzno+585LLT+1nw+mME0p63Hc5h/ebEhGRPil0yOkzBhqa8b7zMQ/91xRWr58fvoJ7tO8ruFkZseMvcj1aO2K0sSw7FKanQWF+zEMlZ5bz+ezbwdvG4qxi/uLWovDPRjV3X7ECT3Em9Q0nIS83RZUfXpOnT2f+okV469r52q1lrF5fyqoVBSw5q5IrlmUCjJvjMXn6dFYuWgTA4oyJUT8bVdx92Y14MkPUNzUmfoFgeFHN1rbEZdyuxIEksjl7L+opIiJDwzID7eIywi1ZssRs3bo11dUYX0KGHb97k4NbtrNs5pnsOnKU6751ER3+3aS5S/npV6OuWJ57buwaGLkerZQ9nrS1431nNxl+Lz63x+63n5WZ6lqlho5FrJ7HY+kZ9gQIvg57a+/ovh25P9DJJfqT5u67tSQ93a6LiEgPlmVtM8YsSXU9RhOFDkleIAiVtXC4krqaWorz7CvcMX2zb6nmwftr8Fw0h/qONoomT05xpUVkTDDGHkcUN5D4wrc7Bz5mrD8ZafZ4kkTdubSYpsi4pNCRPIUOGThfBxyphqM19vSp0RwWlBTirW0nI9imK7gikjqRiQ/6ai3p6Byc94oe75So1cTtUjARGWMUOpKn/i3Sv5ZWOFQJ1XW9rx66XTC1FKaVQnoanvBuT68XEREZJtFBIJGQgY4+Qomvw54koT+RNW/afdCQoIzT0Xs8SWaP2y79ORaRsU2/5SQ+Y+BEox02jsf5S5qVAdPLoKzEnklGRGQ0cURND52foEwwFBtG4gWURFNG93yd1nZ7S8QVnpErzYW3zkeGw48vlIZnat74Hf/mD+A92kiGo1PHAnQ8eoo+Hq5sPJedrd4VI9w4/mmVuEIhqKm3w0ZLa+/H83JhRhmUFKq7gIiMbU4HZGfaWyKBYJwxJT3CSbDvge87Dx3g3U8+4lOXXs72AxU8+cZMnnjzOJ+6JINbL3oDY9qZO23GuJhOGewplSvq65g3Yx5/9ysfazbO4JqF7/DACicd/mbaOnzj5njsPHSAl7a9xxeuvVE/G9g/G+9+sou7L7sy9nhcmsGtm97CzJnE3LlzmTt3bqqrKnFoTIfY/AGoqIEjVfYgzJ5KJtphI3/sT+cpIjJojLHHwCXqwuXroK62luLcPMDOMLmfuoT2DieZ6UGaf70RlxPqmxopmpCX4m9meNQ1NlCcl5/wWMD4OR6RYwH62YB+jsead3HddBn19fUUFRUNeV00piN5aukY79p9cLgKKmrtue+jOR0wZRJMn9L3lT4REYnPssDttrfc+KPdiiOLbPo68G3czapbqlm9rpRVt1TjszLwnFXK0J9CjRzF4a++j6vjHgtg3ByP4qjbiY7HeDkW0M/xcHvwwLAEDjk1aukYr5pa7C5UtfW9VwtPc8O0KTB1shbrExEZTlrHpZuORSwdj1gpPh5q6UieQsd4YgzUN8ChCjjZ1Pvx7CyYMQVKS7RSr4iIiEgCCh3JU/eq8SAYgupjcKgKWtt6P14wAWaUQ1G+BoeLiIiIyKBT6BjLOv32Qn5HqnrPN28Bk4rsweETclJSPREREREZHxQ6xqLWdntweFVt76kanU4oDw8Oz8xITf1EREREZFxR6BhLGprtweHHjvd+LD3NDhrlk8f3YkIiIiIiMux09jnaGQPHTthho7G59+M52XYXqslF4NDgcBEREREZfkMaOizLuh74d8AJPGaM+VGPxz8H/AtQFd71sDHmsfBj/wzcBDiAV4G/MGNlqq3BEAxC5TE4XAltvt6PT8y3w0ZhngaHi4iIiEhKDVnosCzLCfwHcA1QCWyxLGudMebjHkWfNsY80OO5FwOXAOeFd70DXA68OVT1HTU6OuFINRyttlcRj2ZZUFpsh42c7NTUT0RERESkh6Fs6bgA2G+MOQhgWdb/ALcCPUNHPAbIANKw51lyA8eGqJ6jg7fNbtWoOgahHg0+Lpe9kN+0UshIT039REREREQSGMrQMQWoiLpfCSyNU+5Oy7KWAXuBvzTGVBhj/mBZ1htADXboeNgY88kQ1nVkMsZexO9QJdSf7P14ZjpML4OySeByDn/9REREREQGYChDR7yBBD3HZKwHnjLGdFiW9WXgceAqy7JmA2cDZeFyr1qWtcwY81bMG1jWSmAlwNSpUwe18ikVMnCs3g4bTd7ej0/IsbtQlUwEh8ZriIiIiMjINpShoxIoj7pfBlRHFzDGnIi6+3Pgn8K3bwc2GWO8AJZlbQAuBN7q8fxHgUcBlixZMvoHmQcCUFFrL+bX3tH78eJCO2zk52pwuIiMCZ1tjXz0+/VYgeOQVsw5l91EWlZeqqslIiKDbCjnUN0CnGFZ1gzLstKATwProgtYljU56u4tQKQL1VHgcsuyXJZlubEHkY/d7lW+DthzCN7YDLsPxgYOh8NeW+OyJbD4XCiYoMAhImPGzt+t4eFfnslFdz3A6sfO4OO3Xkh1lUREZAgMWUuHMSZgWdYDwMvYU+b+0hjzkWVZ3we2GmPWAX9uWdYtQAA4CXwu/PRfA1cBO7G7ZL1kjFk/VHVNmWavPTi8ut4evxHN7YZpk2Fqqb2wn4jIGLFjxw42bdrEsvnl7PzoA/577Xw6/c/yxLoLWXb+f/NRnZ/5i85n7ty5qa6qiIgMEmusLH2xZMkSs3Xr1lRXo3/GwPEGe7zGicbej2dlwowpMKUEnBocLiJjT21tDf7aD2is+pjWdjc/f3opT65fxGdWbOdP79lMbq6TjCnnM/PcC1JdVRGRuCzL2maMWZLqeowmCh3DJRSCmvDg8JbW3o/n59rjNYoL1X1KRMasoL+DI9vW0XriaNc+X2cWbpcPX4eT7Ex/1/6JM5cwac6lWA5dgBGRkUWhI3lDuiK5YC/gd7TGHhze0dn78UkT7bCRlzv8dRMRGUad7c0c3vIcHS3Hu/bll89jytyrsRxOWk9WUfH+C/h99qx9xw9upa2hmqkLb8admZOqaouIyCBQS8dQafPZQaOiFoLB2MecDnttjelT7O5UIiJjXHtTHYe3PEego3sa8JIzL6Fo9lKsqNbdQGcbFR+8hLf+UNc+Z1om5fNvIKd4xrDWWUQkEbV0JE8tHYOtqcXuQlVb33tVkvQ0e9Xw8smQ5k5J9UREhltL/WGObltHKGh3nbIsB1POu478snN6lXWlZTH9/NupP/Aex/ZsBAzBznYOb/kNRbOXUnLGxViOoZx4UUREhoJCx2Awxl4x/FClvYJ4T54suwvV5GK7lUNEZJw4eXQnVbte7Zqhz+FKZ9riW/BMtBd0bQo28eyxDXjT6vF0FnFXyQ1McE6gePZSsvOncPT9Fwh02OPg6vdvpu1kFeULb8Kd4UnZ9yQiIslT6DgdLW1439pFhvHh63TgyQzFPl6YZ4eNifkaHD4KRHc1NPR/u6/Hm4PNPFf3Kq1px2NOpETGC2MMx/a+S/3+TV373Bk5TL/gDtI9hdQH6qkMVPLm8a28+OMFvPXonSxbuYOWv36G8wvOJt+ZT/6EfMouvYv6Ha/TerwCgNaTlex/+78oX3gjnonTUvXtiYhIkhQ6krRz5062b9/OzTfexPaf/5on35jOE28e50+unc3dl+2gI9BC2dlnMveaqyB3fFyJ8xs/R/1H+bjzY/Y0VuFM7yTgczPB48RhOU7ppD3mtum/bLL349VjMHV43bzyv8/nrUc/xbKVO2j76zXcXHwFpa5SMhwZQ/reIqkWCgWp+vAVGqs+BuyPcKCoAP855/Iam9j8zmb2bt3L/FvmU/tJHb9/ZCGBjmf5/SMXMvf6T9jTso280jwmn2OvH5s+Jx3PjAm4G1rIajdktbfTuPPXTJuylMlnXIxlqQVZRGSk00DyJNXV1VFcXAxA4MW3yb3zYto7nGSmB2le8y6uq86n3ttCUVHRkNcllTpCHRzyH+LV7a+yc/9Opl88ncodJ9i2ZhHbng1y4R8VsODW3xPoaIk5eRjLqj+upubjGs666ixqP6njp5+6j0DHXlzpF/LV5x/G19JGXmkec+fOpdRVSqm7lCmuKeQ4NCuPjB1Bv4/D29ZR31ZBQ65F4wSLxjwXna7uluCW+hZyiuyf++6AvoBlKz/g2q9vId3jx3vci2diPxdujCEr4KIwfTIF7kLyHfnkO/PJc+aRY+XEDFAXERlMGkiePIWO0+B9aRsP/aKI1eunsOqWah784nE81y4c1joMp7ZQGwf9B9nfuZ+KQAUhQjEnD6GAxd9O+zP87W7cmX7+6chPcbjMwE4eRiALq9/b0fsix8LCotULLw/wRCrHkUOpyw4gpa5SChwFOlmSUcUYQ1OoicNt+9hbv4UT2Z10pvX9M5xpZVLmKqPAUcCOxgO0p50koyOfCwrPocN00BhspCHUQGOwET/+Pl8rHhcu8px5XUEk32GHkXxnPulW+ql+qyIigELHqVDoOB1t7Xjf2U2G34vP7cFz6Vljbgrc5mAzB/wHOOA/QFWgKmG5AkcBDV4/6//lPH7/6HwuX7mDu76xl89MugVIfKI+4NtRT+8rACRzP+b2IJ/kRw+OTeuYwJl5pRwPHqc+WE+IUJ/PzbAyYkJIkbMIp6XF0WRkaQo2URmotDd/JV7j7bN8hpXBFNcUylxllLnLKHQUDuhzZ4zBa7xdIaQhaG/HO2ppdfhOabxclpVlt4g48roCSb4zn1xHrj5rIjIgCh3JU+iQXk4GT7K/cz8H/AeoC9YlLFfsLGa2ezaz0mZR4CyIOtE+jqdzogZPx+E3fmoCNVQHqqkKVFEbqCVAoM/nuHAx2TXZ7pLlKmWyazJuS1Muy/BqCbVQ6a+kIlBBZaCSllBLn+XdxkV52lQ7ZLjKmOicOOjhvrH+AHt3v4TX1UFrJrRlWnTkZNCeaeGjI+nXc+Ag15EbE0QiLSRZVpZaIEWki0JH8hQ6BGMM9cF69vv3c6DzACdDJ+OWs7AodZUyyz2LWe5Z5Dq1ivrpCpog9cH6rhBSHajGZ3x9PseBgyJnUVdLSKmrlEzH2Gphk9TzhrxU+iu7WjOaQnGmA4/iDBjymg0FXifnTLmcqYXzcAzDAG+/r4Wj21+kraG7JdaV4aF44TV05mbaLSPhFpLGYCONoUaCBPt4xfjSSOsaL9IzkOgigMjgMMYQJEiH6aDTdHZ97Xm703TSEmphb2M1JqMNT2cRd5fcOKwXOhU6kqfQMU6FTIiaQI0dNPwHEl61dOCg3FXO7LTZzHTPJMuRNcw1HV+MMZwMnYwJIf1dUQa7e1t0lywFQklWa6iVqkAVFX67JaMx1NhneTduCjsyya5tIL/J4PFCemYO08+/g4ycicNUa5sJhTi29x3qD2zp3mlZTJpzGRNnLolpoQiZEC2hlu6uWuFxIw3Bhn67iCXisTx2CIlqIclz5JHjyBmW4CUyEoRMqHdAIHFw6BkiIvf76oJctauKQ+8dYuFtC2Mmr7nojwq48Mb3uMy9hJkzZzJ37twh/34VOpKn0DGOBE2QykBlV9epdtMet5wLF9Pd05mVNosZ7hkadJlizaFmqgPVVPurqQ5UcyJ0ot/neCwPU9xTuoKIBqdLT+2h9pgxGYlaOCMi3fzKXGVMcZYS+PhDmqs+6Xo8I7eY6effntJF+5qPHaRyxwaC/u7WwpzimZTNvx5XWv+tgX7jt1tEQo29Wkg66Uy6Pk6c5DnyugawR7eQaOpsGSmMMQQIxJz4DyQc9Lx9KhM+JKuvyWv++ejP+NrEB6ivrx+WGUQVOpKn0DHG+Y2fI/4jHPAf4KD/IJ0m/h/OdCudGe4ZzHbPZqp7qroLjGDtoXZqAjVdLSF1wboBDU6f7Jrc1RJS7CzWgNlxxhfyURWoojJgj8s4Eew7vDpxdoWMMlcZJa4SXJaLoN/HkW3raD1R0VXWUzSDqYtuxulKG+pvo1+d7c0c3f4C7Y01XfvcmTlMXbiCrPxTm7rbGEObaYsJIpEWkqZQ0ymt+5NpZXYPZI/qqjXBMQGXpSW0ZGBCJpQwFAyktSGy9fc3ZDg5cZJmpZFmpZFupcd8jb696cQunv+Xc7smr7nnG/v5Yumnh62eCh3JU+gYgyJraOz37+eI/0jCgcpZVpY9PiNtFmWuMp2EjlJ+46c2UBszOL2/K04uXExyTepqCZnkmkSalfoTRhk8HaaDKn9VV2tGfbC+z/IOHExyTaLMVUa5q5xJrkm9Tn4725s5/N5v6PB2B5b88nlMmbscyzFyuhGFQkGO7X6b44e2de2zLAeTzl5G4fRFg9rqFzRBmkJNsbNrhb8mak3uj781HWdGJyFfOiU52V3/Dlb4P/v7sWLvR30daJnocr2e27MMFvb/vff3ev1Bqlt7qJ1tDXvwpzfj6shhSf5ZXS1EJvxfr9um9/7o+137TZznxrkdXe50ygxG3QImQF1LG46MDgLtbjI9wVManzSU0qw00ogfEuLti3d/oKE71ZPXKHQkT6FjjGgNtXLQf5ADnQe61tCIJ9eRyyz3LGanzWaSc5L6G49B0YPTI1t/Jz8WVq/B6Rq/M7p0mk6qAlVU+auoCFRQH6zv8wq8AwclzhLK3HZLRn+zorU3HePwlucIdLR27SuZcylFsy4YsV33mmv3U7HjJUKB7pmscktmUzb/Opzuoe/e1BHq6BVEIl23ok8Wqz+u5tB7h1hwy4Jei6zOvf51/L5mimYWjYtFVsHut99Y1cjkc2bz4g8K2LFuAXOu2MAt33PQUl9LW0PbuDke1R9Xs/u13Sy9b+mQ/mxEWheSCQs9g0MaaSP2d8FQUOhInkLHKNYcbO4aCF4dqE5YrsBRwOy02cxyz6LIWTSufimIfXWtIdQQMzi9OdTc7/PyHfkxISTXkaufnRHEb/xUB6q7xmQcCx7rM2RYWBQ7i+2WDHc5k12TB9y61VJ3iKPb1xMK2i1oluVgyvzryZ9y9qB8L0Ops63J7m7VVNu1z505gWmLV5A5oSQldTLGdA1mbww2crD2IBRCQ6iBpk7vmFpk9VRE+u0nWnAWGDfHo78FeJ0u6DjRQWFR4Sm1MkRuq6dD8hQ6kqeOo6PMQNfQKHGWdHWdKnAWDGMNZaSxLIsCZwEFzgLmptszerSEWrpaQaoCVXH79zeEGmjobGBX5y7AHpweCSBT3FMGvLibDI6ACfQKGf31w46EjDJ3GaWu0lOaFOLk0Q+p2vUahC9QOVzpTFt8C56JU0/p+xhuaVkTmHnRPdTufosTh98HwN/exIF3n2Ly2ZdTMG3BsP8cW5ZFrjOXXGcu09zTmD99ftdjP69+istX7ujqp57ZWcBt+csxObHddKCfLjp9dNPp9VzTfzej/t63ry5ESdetzN73YetBlq3cwVuPzmfZyh04OrI5L3um3flqSnLdu5LtAtazXJ9lsPrsopZM3Xp2YyOn+7nPH3st5mfD4y/iixM/jZWv38MyOqilY4QzxlAXrOOA/wD7O/fTEGqIWy6yhsZs92xmps0k16EpU2XgfCFfTHesgZzQplvp3SHENUWD0wdZwASoDdR2jcmoDdT22397onNi15iMKa4ppDtOfeY5YwzH9m6kfv/mrn3uFE2JO1iaavZS+eHLhALdE2pMmHwmU+Zdi9M9MmbpS3U/9ZFExyKWjsfIopaO5J1Zq+kAACAASURBVCl0jEBaQ0NSzW/8HAsc62oJqQnU9Ds43YmTSa5JXV2ykum+I/ZYnNpgbdeCfDWBmn5DRqGjsGtMxhTXlEFbJDIUClL14cs0jrApcQdDR2sDR7evx9fcPbA+LTufqYtuJjO3OIU1E5HRRKEjeQodI0TQBKkIVHCg88CA1tCYnTab6e7pWkNDhkXIhHqtnD7QwenRixYqGHcLmiB1wbqukFEdqE4401xEgaMgJmQMxfGMNyVuTtEMykfIlLiDIRQMUPPxm5w8uqNrn+VwUnruVeSXz1O3QRHpl0JH8hQ6UiiyhsZ+/34OdR5KuPhUupXOTPdMZrlnMc09TXO4S8oZY2gMNXYFkOpANU2hpj6f0+F1484I4Pe5yPQEu/opR4u3byCP9fu41fPuqb9Wf8/tr2zIhGj2hnBl+PH7XKR7Ercg5TnyusZklLnKyHZkD/i9T0W8KXELpp5H6blXj6gpcQdLY9UnVO18tWuAPEBe6dmUzls+ZgKWiAwNhY7k6ex1mPlCPg75D3HAf0BraMioZVlW16JmkcHp3pA3piXkw50fUvF+BXNvmNtrqseFt7+Nr+UkhVMLh2fayxFwbaVqVxW1u2uZsXRueBrQ87umAe3wnqS5rplp06dx4XkXdgUNj2P4ujKNxilxT1felLPJnFBid7dqOQ5AY/UntDcdY+riFaN27IqIyEiklo5hEFlDY3/nfioDlVpDQ8aFitoKAoX2jEvvtW7jb6dqGtC404Ae/SnX5SynzF1Gx4kOioqKhr9ucabELZt/PXmjYErcwRAK+qn+6Hc0VOzq2mc5XJTOvZqC8rkprJmIjFRq6UieWjqGSFOwqWvGqZpgTcJyhY5CZqXNYrZ7NhOdE8fsFUUZf8onlQMwwz2DTxoqek31+PmJd0Fed/m+1pjo67F+Hzc97576a51WPcKTzDxRuzbmWOR0FnNO+jn2g8OfN+JPibvkVjyF5cNfmRRxON2UnXcd2QVlVO16DRMMYEIBqj58mbaTlZTOvRqHM/HCiSIi0j+1dAwSYwwnQyc50HmA/f791AfrE5YtcZZ0BY18Z/4w1lIkNTTVY7eRciyMMRzbs5H6A9FT4uaGp8QtHPb6jBS+lhMc3b6ODu/Jrn3pnkKmLloxro+LiMRSS0fyFDpOQ2Ogkf859gLt6Q0EfW7c2R1xy2kNDREZSULBAFUfvkJj9dibEncwhAJ+qna9RmPVx137HE43pXOXk192TgprJiIjhUJH8tS96jT8ovZpNvx4EW89uoBlKz/g2q9v6ZqJxoGDqa6pzEqbpTU0RGTECPp9HNm6jtaTY3dK3NPlcLkpm3892YVlVO/6HSYUIBT0U7ljA60nKyk990p1txIRSZJCR5J27tzJ9u3bufnmmzmyYze/f2QxgY5n+f0jF3LO8r1M9BewcPpCrl1wrdbQEJERpbOtmcNbxs+UuKfDsiwKyueROWESR7evp7O1AYCGip20N9UydeHNpHsKUlxLEZHRQ39lklRSUsL9999PYWEhZy9YxOVfNrgz7+KKL59k3qKlfPv2b3Nh2YUKHCIyorQ3HePAu0/GBI6SOZdSOne5AkcfMnOLmH3pfUwoPatrn6+5nv0bn6Cxek8KayYiMrpoTMdpaAg0sKbu5ZQPCBUR6Utz3UEqtr/QPSWuw0nZedeNmylxB4MxhpNHP6Tm4zcwoWDX/oJp85l89hU4nOo4IDKeaExH8hQ6RETGME2JO7jam45xdPsLdLY1du3LyC1m2uIV/H/27jw+yvLe///7muwrJCEbgYTFIMGQQIiIC4uCrSgGW2xdaqX2NG2xxVK1tlZqz+Hb2s16qFrRWtsDtaKt8kNR68IOKmoSiCyRxZgAIZCQQEIg+1y/P7IYIEBY7kyW1/PxyIO5l7nnw+1E5j3X5hvY9zTPBNCTEDrOHm3qANADWWu1/9P1Ktr8bmvg8AkI1dArbiNwnIeAPtG66Ko7FBozrHVfTWWJdq57XhX7d3qwMgDo2ggdANDDuBsbtGfTm8etweEfGqWhV9zOWhMXgJePn+LTpil2xNUypumfUXdDrXZnv6Z9W1fJ3ab7FQCgCZ1QAaAHaZoS91UdLd/bui8kaogGjr6BKXEvIGOM+g1OU2BYf+3OWab66kpJUllBjo4d3qf40dPkG8gYPwBoQUsHAPQQdccq9dn7i48LHOHxqUoYM53A4ZDAvjFKHP9NhUYPbd1XfXi/dq77hyoP7PJgZQDQtRA6AKAH+GJK3PLWfTHDx6t/MmtwOM3Lx1/xY6YrJmmi1Ka7VWHWqyrOW3PcbFcA0FvRvQoAujmmxPU8Y4wih6QrMKy/9uS8rvqaI5Kkg/lZOnZonwaOvkG+AaEerhIAPIevvwCgGyvf/YkKs5a2Bg6Xt58Gj72ZwOEhQWH9ddH4byokakjrvmOH9mnXun/oSMnnHqwMADyL0AEA3VDTlLjr2p0SNyhigIer6928fQOUkH6TYoaPl4yR1DTAv+DjJdr/6TpZt9vDFQJA56N7FQB0M+7GBu395G1V7Pu0dV9An2glpH9FPv5BHqwMLYwxihw6tnl2qzfUUFslSSr97KPW7lY+/sEerhIAOg8tHQDQjTTW16jgo1eOCxwhUUM0eNzXCRxdUFD4ACWO/6aC+yW07jtavlc71y1S1cFCD1YGAJ2L0AEA3UTdsQqmxO2GvP0CNWjsDEUPu1JSc3erump9/uHLOrDjfVlLdysAPR+hAwC6gaYpcRczJW43ZYxRVOI4Db7sZnn7fdEiVbLzA33+4Suqrz3qweoAwHn8SwUAXVxlSb7yP3hJDc0fTI3LSwNH36DIoWNlmgcqo3sI7hevi676poIiBrbuO1q2W7vW/UNVZXs8WBkAOIvQAQBdWFlhrgo/bmdK3P7DPVwZzpWPf5AGX3azohLHte5rqD2qzzf8WyU7N8g2z0YGAD0Js1cBQBdkrdWB7etV+tlHrft8AkI16NKvyj8kwoOV4UIwxqXoYVcqMCxOeza9qca6aklWB3a8p8ItG+XjXSPrFa6hY66Uj3+Ip8v1iPqaI/os+z2ZxvJefy8k7seJ2t4P+URqxIRp8g3s6+mycBqEDgDoYpgSt/cIiRykxPF3as/GN3S0fK+OVvvo2ZfS9MKyNN1+Y44yj72poIB6T5fpEU334jLuRTPux/GOvx8bNdu8oVFf/oany8JpEDoAoAtprK9RYdarx81QFRI1RPGjp8nl7ePByuCUT3d+rvc2lWvCqIv16dq39fyrV6iu/t96/tVoXT56u45VH9OAmAglDor1dKmdYnv+Pu0/eFjJiYP0/Ks1qqvfpn8s3a7LR2+Xl8vqyNHqXnM/dhQU673sT/WVa8fqs92lvDfy92nTpwX68lWpJ9+PtA9UWBOsoUOHKjk52dOloh2EDgDoIuqOVajg4yXHzVAVHp+q/pdcwwxVPVh0dLS+P2uWJKmm/KDumO7WC8u+pttv3KiU4SMUFhmi8sOV8g8N9XClnWNAgp9SR4XqUOkR3TE9QC8sG6Hbb6xVyvAjCots6k7UW+5H3EA/zUpJkST5+UXw3kjwU+qoVEkn34/0tMs16svTVVpa6uEqcSqmpwxYS09Pt1lZWZ4uAwDOSXXFARV8vEQNtcda98UMH69+Qy5lhqpepO7YYW1b94ZUVyr5RmrE+Bt6bT917sXxuB/H8/T9MMZkW2vTO+0FewBCBwB4WOWBfO3euEy2sUFS05S4A1KvY4YqAOiiCB1nj+5VAOBBZYW52rdlhaSmL4C8fPyVkD5dQeEDPFsYAAAXEKEDADygaUrcdSr97OPWfT4BoRo09qvyD2ZKXABAz0LoOA/VFQf06fvvyDQclPXup2HjJss3oHcM5mpPXXWldmxYwf0Q9+JE3I8vtL0XNbVeCgpo2h/QJ1oJl35FPn5MiQsA6HkIHedhy+qlevr5UXph2a1Nc2YffZk5s1+6jPsh7sWJuB9fOOle3PKhYhIGMiUuAKBHYw7Gs7R582YtXLhQZWVl2vrpVj3/qpdqav+t51+t0pYd2/WfNRu1s6DY02V2mu35+7Ti/c06XHlUn362s1ffjx0FxXpjdQ73otmOgmItffcj7kez7fn79MbqHNXUVOj5V2tUU9u09sCWndtVUNVX/3r5FW3ZssXTZQIA4AhaOs5SdHS0Zs6cKUlKTkrWHdMbm+eIztHIi5MU2sdb5YePyLuXdJGIiYnWJUmJkiRf3/BefT+io6I04uKLJHEvJO7HiVp+VyorGnTHdP/WtQfSR3tp1NVXSxLzywMAeiymzD0Pnp4juqvhfnyBe3E87scXuBcA0P0xZe7ZI3QAAAAAZ4HQcfbOekyHMcZljOmd084AAAAAOGsdCh3GmBeMMaHGmCBJ2yRtN8b8xNnSAAAAAPQEHW3pGGGtrZR0k6Q3JcVL+qZjVQEAAADoMToaOnyMMT5qCh2vWmvrJfWMwSAAAAAAHNXR0PGMpAJJQZLWGmMSJFU6VRQAAACAnqND63RYax+X9HibXYXGmKudKQkAAABAT9LRgeTRxpjnjDH/ad4eIWlmB553nTFmuzFmlzHmZ+0c/5YxptQYs6n55zttjsUbY94xxuQZY7YZYwZ1+G8FAAAAoMvoaPeq/5P0tqT+zds7JM053ROMMV6S/ixpqqQRkm5rDisneslaO6r5569t9i+S9AdrbZKksZJKOlgrAAAAgC6ko6Gjn7X2X5LckmStbZDUeIbnjJW0y1qbb62tk/SipOkdebHmcOJtrX23+fWqrLXHOlgrAAAAgC6ko6HjqDEmQs0zVhljxkmqOMNz4iTtabO9t3nfiWYYYz4xxrxsjBnYvG+YpMPGmCXGmI3GmD80t5wAAAAA6GY6GjrulfSapKHGmPfU1PVp9hmeY9rZd+I0u8skDbLWpkhaLmlh835vSeMl3S/pUklDJH3rpBcw5rvGmCxjTFZpaWkH/yoAAAAAOtMZQ4cxxiXJX9JESVdI+p6kS6y1n5zhqXslDWyzPUDSvrYnWGvLrLW1zZvPShrT5rkbm7tmNUhaKintxBew1v7FWpturU2PjIw8018FAAAAgAecMXRYa92S/mitbbDWbrXWbmleHPBMPpaUaIwZbIzxlXSrmlpLWhljYttsZkjKa/PcMGNMS5K4RtK2DrwmAAAAgC6mo92r3jHGzDDGtNdlql3NLRQ/VNOsV3mS/mWt3WqMmWeMyWg+7R5jzFZjTK6ke9Tchcpa26imrlUrjDGb1dRV69mOvjYAAACArsNYe+Iwi3ZOMuaImlYjb5RUraYQYK21oc6W13Hp6ek2KyvL02UAAACghzPGZFtr0z1dR3fS0RXJQ5wuBAAAAEDP1KHQIUnNXaImNG+utta+7kxJAAAAAHqSDo3pMMb8VtKP1DSYe5ukHzXvAwAAAIDT6mhLx/WSRjXPZCVjzEJJGyX9zKnCAAAAAPQMHZ29SpL6tnnc50IXAgAAAKBn6mhLx28kbTTGrFLTzFUTJD3oWFUAAAAAeoyOzl612BizWtKlagodP7XW7neyMAAAAAA9Q0cHkn9F0jFr7WvW2lcl1RhjbnK2NAAAAAA9QUfHdPzSWlvRsmGtPSzpl86UBAAAAKAn6WjoaO+8Dq/xAQAAAKD36mjoyDLGPGaMGWqMGWKM+V9J2U4WBgAAAKBn6GjomC2pTtJLkv4tqUbSD5wqCgAAAEDP0dHZq46qeSFAY4yXpKDmfQAAAABwWh2dveoFY0yoMSZI0lZJ240xP3G2NAAAAAA9QUe7V42w1lZKuknSm5LiJX3TsaoAAAAA9BgdDR0+xhgfNYWOV6219ZKsc2UBAAAA6Ck6GjqekVQgKUjSWmNMgqRKp4oCAAAA0HN0KHRYax+31sZZa6+31lpJuyVd7WxpAAAAAHqCjrZ0tDLGvG6bNDhREAAAAICe5axDh6S4C14FAAAAgB7rXELHxgteBQAAAIAe67ShwxgTf+I+a+23nSsHAAAAQE9zppaOpS0PjDGvOFwLAAAAgB7oTKHDtHk8xMlCAAAAAPRMZwod9hSPAQAAAKBDvM9wPNUYU6mmFo+A5sdq3rbW2lBHqwMAAADQ7Z02dFhrvTqrEAAAAAA907lMmQsAAAAAHUboAAAAAOAoQgcAAAAARxE6AAAAADiK0AEAAADAUYQOAAAAAI4idAAAAABwFKEDAAAAgKMIHQAAAAAcRegAAAAA4ChCBwAAAABHEToAAAAAOIrQAQAAAMBRhA4AAAAAjiJ0AAAAAHAUoQMAAACAowgdAAAAABxF6AAAAADgKEIHAAAAAEcROgAAAAA4itABAAAAwFGEDgAAAACOInQAAAAAcBShAwAAAICjCB0AAAAAHEXoAAAAAOAoQgcAAAAARxE6AAAAADiK0AEAAADAUYQOAAAAAI4idAAAAABwFKEDAAAAgKMIHQAAAAAcRegAAAAA4ChCBwAAAABHEToAAAAAOIrQAQAAAMBRhA4AAAAAjiJ0AAAAAHAUoQMAAACAoxwNHcaY64wx240xu4wxP2vn+LeMMaXGmE3NP9854XioMabIGPOkk3UCAAAAcI63Uxc2xnhJ+rOkayXtlfSxMeY1a+22E059yVr7w1Nc5v9JWuNUjQAAAACc52RLx1hJu6y1+dbaOkkvSpre0ScbY8ZIipb0jkP1AQAAAOgEToaOOEl72mzvbd53ohnGmE+MMS8bYwZKkjHGJemPkn7iYH0AAAAAOoGTocO0s8+esL1M0iBrbYqk5ZIWNu+/W9Kb1to9Og1jzHeNMVnGmKzS0tLzLhgAAADAhefYmA41tWwMbLM9QNK+tidYa8vabD4r6XfNjy+XNN4Yc7ekYEm+xpgqa+3PTnj+XyT9RZLS09NPDDQAAAAAugAnQ8fHkhKNMYMlFUm6VdLtbU8wxsRaa4ubNzMk5UmStfYbbc75lqT0EwMHAAAAgO7BsdBhrW0wxvxQ0tuSvCT9zVq71RgzT1KWtfY1SfcYYzIkNUgql/Qtp+oBAAAA4BnG2p7RKyk9Pd1mZWV5ugwAAAD0cMaYbGttuqfr6E5YkRwAAACAowgdAAAAABxF6AAAAADgKEIHAAAAAEcROgAAAAA4itABAAAAwFGEDgAAAACOInQAAAAAcBShAwAAAICjCB0AAAAAHEXoAAAAAOAoQgcAAAAARxE6AAAAADiK0AEAAADAUYQOAAAAAI4idAAAAABwFKEDAAAAgKMIHQAAAAAcRegAAAAA4ChCBwAAAABHEToAAAAAOIrQAQAAAMBRhA4AAAAAjiJ0AAAAAHAUoQMAAACAowgdAAAAABxF6AAAAADgKEIHAAAAAEcROgAAAAA4itABAAAAwFGEDgAAAACOInQAAAAAcBShAwAAAICjCB0AAAAAHEXoAAAAAOAoQgcAAAAARxE6AAAAADiK0AEAAADAUYQOAAAAAI4idAAAAABwFKEDAAAAgKMIHQAAAAAcRegAAAAA4ChCBwAAAABHEToAAAAAOIrQAQAAAMBRhA4AAAAAjiJ0AAAAAHCUt6cLQM9RWFamP7y+VlUNVQr2DlZG+sXqGxgolzFNPy7zxWPjkjHmFMeafoxxnfJY6/F2n2c8fSsAAADQBqED5yU3N1f5+fkaPXasZs1/Vjs/SFb+BmnIZbX6dNMLcjceUUhklMIGDOi0mozUFD5cTeHGZYy8WgKJ64vQ026QOSEYuU4IRuak57jaPVZb36BN+SWqU7X6BYTrgRsnKiokpNPuAQAAQFdC6MB5iY2N1fARI/S7t95R5MVD9O7jN8k2eqsgq0FX3FUnl5dVTWVlp9ZkJTVaKzVaSe5Oe91De/fo0N696p88UuWFJcrfMFL5G4yGXFalgq2P687LRmrIkCFKTk7utJoAAAC6AkIHzktEv356fMUq5R88qMZ6byVNzlPeiiQlTc6Tr/w1KiFKbuuW29rWH2ut3G573L6259iTjp1wTjvPbXmO9eC98A/toyHjBkqSYoaHaOUTbQPYC3INGqzIqCgPVggAAOAZhA6cM2utFn6wQbl790qSfPwbNP7rO5V+8yZFBoTr/mlTO71LkW0vrLit7AnBp+2xpiDUzvE24caeEIxODj7Hn/Ov97doxJQ8bVveFMAa6730cnaO8vrH6rsTxqtPQECn3hcAAABPInTgnL26KVdrd+xs3Z6WMlI3j0nzYEWSaR6/4eXRKqSk2Fg96rdWaTM2yTT6yHo3SJK27ivWL159Td+bMF6X9O/v4SoBAMD5ys7OjvL29v6rpGT13plh3ZK2NDQ0fGfMmDEl7Z1A6MA5Wb19h5Zuym3dvnLoUM1IG+3BirqWqJAQ/f62GyRJDW63lm7cpDc+2SwrqbK6Ro++/a6mpYzUTaNHycvVW///BABA9+ft7f3XmJiYpMjIyEMul8uTPb09xu12m9LS0hH79+//q6SM9s7h0w7O2qY9e7Twgw2t28lx/XXXVVcwVe0peLtcunlMmu770hSF+vtLahrsvuyTzfrdW2+rrOqoZwsEAADnIzkyMrKytwYOSXK5XDYyMrJCTa097Z/TifWgB/istFRPrVoja5t+rxIiwvWDqyfJm2/rzyg5Lk7zpmdoRGxs674dB0r08GvLtHH3Hg9WBgAAzoOrNweOFs334JQfCPmkiA7bX1Gh+e+uUF1joyQpMjhYP54yRQE+Ph6urPvoGxig+780RV9NG93aMnS0tlZ/WrFSL3z4kRqa7y0AAIAT7r333v4PP/xwtCTNmTOn/9KlS0Mkad68eVFHjhxpNxs88sgjkfHx8cnGmDHFxcXnNDyD0IEOqaiu1h/fWa4jtbWSpGA/P933pSnqG8gsTGfL5XIpIzVFD079ssIDA1v3v7MtT79+8z8q6eR1TQAAQO80f/78fTfddNMRSXrmmWeiq6qq2s0GEydOrHr33Xd39O/fv+5cX4uB5Dij6vp6PfbucpVWVUmSfL28NGfKZMX06ePhyrq3YdHRmjf9Rj27/j3l7mmadvjzg2V6+LXXddcVl+uyIYM9XCEAALjQ9h0+7PuH19cmHqqr8A/z7VPzk2kTdvbv2/ecP8xXVla6MjIyhhQXF/u63W7zwAMP7MvMzDwUFxc3MiMjo3z9+vWhkrR48eL85OTk2rbPnTFjxqBp06ZVFBUV+ZSUlPhMnDhxWFhYWMOHH364o+15V155ZfW51teC0IHTanC79edVq1VYVi6paUraWZMm6qKoSA9X1jME+/trzuRr9M62PP0rK1uNbrdq6uu1YM1abSsu1u2XjZWfN7+mAAB0B9/6+8IxZzqnvsZbnyxLaVlM2b/kyBsjffwbznjt/7trZnZ7+5csWRIaExNTv3r16l2SVFZW1rpyQGhoaOPmzZvznnzyyYjZs2cPXLVq1a72rjF37tySBQsWRK9Zs2ZHbGzsmYs5B3SvwilZa/X3997XlqJ9rftmXj5Oo+MHerCqnscYoy9fMkJzb5iqyJDg1v1rduzUvGVvqOjwYQ9WBwAALiQvn0blrUhSY5238lYkycvn/MZzpqWlVa9bty501qxZcW+99VZwRERE6wVnzpxZLkmZmZnlGzduDD71VZxH6MApLcnZqPd2fda6PX1UqiZdPMyDFfVsg/v10/9k3Kixgwe17is6fFj/89rrWrtjZ+uMYQAAoPtqrPdS0uQ8efk2KGlynhrrz29J45SUlNqcnJxtI0eOrH7ooYfi7r///tZpMl1tZhc1xnj0gwT9NtCulZ9+qmWfbG7dHp94kW4alerBinqHQF9fzZo4QSNiY/XPDz9SfWOj6hob9bf33lde8X7decU4ZgsDAKCLOlUXqLb2HT7s+4eQtYljbt7UPKbjhvMa01FQUOATFRXVcPfdd5eHhIS4Fy5cGNFybNGiReGPPPLI/ueeey5s9OjRp10YLCgoqLGiosIV22Zq/wuJ0IGTZBfu1j82fNS6nTIgTjOvuJzF/zqJMUaTLh6moZGRWrB6jfZVVEiSPsjPV/7Bg7p70gQlRESc4SoAAKAr6t+3b93/3pGx9UJdLzs7O+DBBx8c4HK55O3tbZ966qnClmO1tbUmJSVluNvtNi+++GL+6a4zc+bMg1OnTk2MioqqP3Eg+a9+9auoJ554IqasrMwnNTV1xNVXX13x0ksvFZ7qWu0xPaXLRnp6us3KyvJ0Gd3ezgMl+v3b76i+eb2Iwf0i9LPrviw/vl33iNr6ej3/4Udat/OLcV/eLpduvTRdk5OGEwQBAPAAY0y2tTZdknJzcwtSU1MPerqmE8XFxY3MysrKc2pgeHtyc3P7paamDmrvGGM60Grf4cOav3xFa+CIDgnRj6dMJnB4kJ+Pj/7rqiv13Qnj5d88i1WD263nP/xIT65craO1tWe4AgAAgOc5GjqMMdcZY7YbY3YZY37WzvFvGWNKjTGbmn++07x/lDHmA2PMVmPMJ8aYW5ysE9KhY8f0x3eW62hdU5fCEH9/3felKQoNYPG/ruCKoUP03xnTFB8e3rove/duPfzqMu0qKfFgZQAAoCsqKira3JmtHGfiWOgwxnhJ+rOkqZJGSLrNGDOinVNfstaOav75a/O+Y5LutNZeIuk6SfONMX2dqrW3q66r02PvLlfZ0abxRX7e3rr32smKCg31cGVoK6ZPH8294XpNThreuq/s6FE98uZbeuOTzXL3kK6SAACg53GypWOspF3W2nxrbZ2kFyVN78gTrbU7rLU7mx/vk1QiidXoHNDQ2KgnVq7WnvJDkiSXMfrB1RM1uF8/D1eG9vh6e+mb4y7T7GsmKdDXV5Lktlb/zs7RY+8uV2X1eS8YCgAAcME5GTriJO1ps723ed+JZjR3oXrZGHPSqnPGmLGSfCV9dvJTcT7c1uq59e9rW3Fx6767rrxcKQMGeLAqdMSYhATNm36jhkZ+kcW3FO3TL15dpm37ik/zTAAAgM7nZOhob1qdE/t/LJM0yFqbImm5pIXHXcCYWEn/kHSXu9EtBQAAIABJREFUtdZ90gsY811jTJYxJqu0tPQCld17vJyVow/yv5g97aujR2l8YqIHK8LZ6BccrAevv07Xj0xu3VdRXa0/vP2OluRsVKP7pF8ZAAAAj3AydOyV1LblYoCkfW1PsNaWWWtbpt95VtKYlmPGmFBJb0iaa63d0N4LWGv/Yq1Nt9amR0bS++psvLstT29u2dK6PeniYboxNcWDFeFceLtc+nr6GN177RSF+PtLakr2r+V+ot+/9Y4OHT3tOkAAAKCXuffee/s//PDD0ZI0Z86c/kuXLg2RpHnz5kUdOXKk3WyQkZExeNCgQcmJiYmXfO1rXxtUW1t71nP2O7k44MeSEo0xgyUVSbpV0u1tTzDGxFprW/qCZEjKa97vK+n/k7TIWvtvB2vslT4uKNALH36x+N/ogQP1zXGXseZDN5YyIE7zpt+ov6xZp7z9+yVJ2w8c0C9eXabvjL9KowbSZQ6dz22tquvqdLS2VlW1dTpW1/Tn0dpaHW3eX1ZVpY35pWowNfJy++mi/qHy9e6969bWNTRo175KNbpqe/394F4cj/txvLb3o19AmH564yRFhYR4uqxuZ/78+a0NAs8880x0ZmZmeUhIyEldJb7xjW+UL1269HNJmj59+uD58+f3++lPf3pW3Ywce7daaxuMMT+U9LYkL0l/s9ZuNcbMk5RlrX1N0j3GmAxJDZLKJX2r+elflzRBUoQxpmXft6y1m5yqt7fYvn+/nlm7rrWf20WRkfr+pAnycrFkS3cXFhion3z5Wi37ZLOWbsqVtVZVtbWav3yFvnzJCH1tTJq8vbw8XSa6obqGRh2rq20ND21Dw/GP63S0rvnP2lodq6s7qU+tJJXv3q2D+fmKT09XeWGJ8jeMVP4Go8FjG7T3ig2qPVqqvv3jFNZLxpcd2rtHJbt2KSH9Uu6Hmt4fR8vLFTbgYuUsCVRh1iXqf8m7KvpSrby863X0UHmvuR+H9u5R0ebNumj8BN4banpvlHy2S4MuHXvc/RhyWaWKdzyt6UnxuuSSS5ScnHzmi3nStm2+RzJuTwz4PM+/enBSTchrL+zUiBF153q5yspKV0ZGxpDi4mJft9ttHnjggX2ZmZmH4uLiRmZkZJSvX78+VJIWL16cn5ycfNwCXzNmzBg0bdq0iqKiIp+SkhKfiRMnDgsLC2s4cUXyW265paLlcXp6+tG9e/f6nm2djkZka+2bkt48Yd/DbR4/KOnBdp73vKTnnaytNyo6dEh/WrFKDY1NATamT6jmTLlGfr34m5KexuVyafqoVA2PidaCNWt1+FjTbFZvb92mHQcOaNakiXwT1Es1tTrU62hdrY7V1qnqpMBwQnhos13XvGDohRLQt6+GTZokSYoZHqKVT9wk2+itwuwGXfntF+TyGqKaysoL+ppdmX9oH1086WpJ3A+p6f0RHh8vd6PR7pzb5W7wVnFeqq7+4QtyeTXF2N5yP/xD+yh56vWSeG9ITe+N4VdfI+n4+1GQ1aDx/7VYt9xyizw+xteYMWc6pUpB+pXm6gndo9mfPe7/i0vGjgxWB7pDW5vd3u4lS5aExsTE1K9evXqXJJWVlbV+wxgaGtq4efPmvCeffDJi9uzZA1etWrWrvWvMnTu3ZMGCBdFr1qzZcbq1PWpra81LL70U8dhjj+051TmnwqfNXqL86FH98Z3lOta8+F+fgADdd+21Cm4eB4Ce5eKYGP2/6Rn667r3lLt3ryTp84Nl+uWry3TXlVdo7OBBHq0P566+sbFNi0LbgHB8WKiqbQoXR2trVVVX19Tq4IG1XAJ8fBTk56cgX9+mP/18j9t+I2enRkzJ07blSRoxJU99/UKVec2lnV5nV/Hsyo+5H824F8fjfhzvxPsRGdC0eG53GOPrrxo9oXtUrUA9oXv0a809r+ulpaVVP/TQQwNnzZoVN3369IrrrruuquXYzJkzyyUpMzOzfO7cuSfNEnu2Zs6cGT9u3Liqtq/RUYSOXuBobZ0ee2e5yo8dkyT5Ny/+FxkS7OHK4KQQf3/9aMo1emfrNv07K1uN1qq6vl5PrV6jvOJi3Tb20l7dH9hTSo4c0aOvr1VJdbnC/frqjqtS5efjfZrAcHx4qGvo/MVlvYxpDgzNocH35PAQ5OenYD9fBfo2/Rnk56dAX98zdt1MH5SgR33XasyMTYoMCNf90yb36ta4uTeFyt+b+yFxL07E/TjeyfdjgqdL6rAa+Wu2Hm9q6dDjqpG/OtTScQopKSm1OTk521555ZU+Dz30UNzy5csrH3300WKpqQdEC2PMeX3zdN9998UePHjQ++233z6nZSz4xNHD1Tc26vGVK7X38GFJTR8efnjN1UqIiPBwZegMLmN0XfIlGhYdpQWr16q0qumLiVXbd2hXSalmTZqo/n37eLjK3sFaq93l5frNa6v03r8vVt6KLytpcp4OVK6Tj3/nBAl/H59Thobg5pDQEh7aHvPz9nZsoomokBD9/rYbHLl2d8T9+AL34njcj+N12ftxii5QbQVv2+Y7N+P2xF9//kv/6sFJNcGvfXReYzoKCgp8oqKiGu6+++7ykJAQ98KFC1s/5C1atCj8kUce2f/cc8+FjR49+rTJJigoqLGiosIVGxt70rHHHnus38qVK/usW7duu9c5jg8ldPRgbmv17Nr12r7/QOu+b191pZLj+nuwKnjCkMhI/XfGjfr7++8rq6BQkrTn0CH997LXdee4y3RV4kUerrBncrvd2llSouzC3Xpr7VoV7Nql2KQUbXs3Uu6Grdr6zicaMGqXfAP9VF5QoPCEhDMOCHW1tjocHx6Cff0U6Oer4OZjbVscgnx9FejnJ28mjAAAzxsxoi5k16atknQh2qqys7MDHnzwwQEul0ve3t72qaeeKmw5Vltba1JSUoa73W7z4osv5p/uOjNnzjw4derUxKioqPoTB5I/8MADCbGxsbXp6elJkjRt2rRDLa0pHWU80cfXCenp6TYrK8vTZXQpiz/6WG9v3da6/bUxabohZaQHK4KnWWu1avsOvfDRR60TCkjSFUOH6M7Lx8nfx8eD1fUM9Y2N2ravWNm7d2vj7j06UlMjSaqurFRAaKjqa7z1ybIU5a1IUtLkPI25aauSBoYp0M9X7mPHFBsdc1x4OK5Vws9P/g62OgAAOsYYk22tTZek3NzcgtTU1IOerulEcXFxI7OysvJONzD8QsvNze2Xmpo6qL1jtHT0UG9t2Xpc4JicNPy4lavROxljdM3wi5UYFamnVq9VcUXTDHjvf5av/NKDmjVpohIiwj1cZfdTXV+vzXuLlF1YqNy9Raqprz/pnIDQUAX4+mj0wBiF37pL6Te39EO+oVf3ywYA9A6Ejh5oQ/7nevHjL1p9xiTE6xtjL+XbUbQaGB6uX954g/6x4UO9t6tpPNj+ykr9vzfe0G2XXqprhl/M++UMjtTUaNOePcoq3K2t+/Yd13LUVmiAv9Li45WeEK/hMTGslQIA6BRFRUWbPV1DW4SOHmbbvmI9u2596/aw6Ch9b8L442YvAKSmQcWZ46/SiNhYLfpgg2obGtTQ6NY/NnyovOL9uuvKKxTkd9Zr//RoZVVHlbN7t7ILd2v7gQOnnII2MiRYY+LjNSYhQUMj+/H7BwDo9QgdPcie8nI9sXKVGt1N37j279NH90y+hmlRcVpXXjRUQyL76alVa7Tn0CFJUlZhoQrKyjRr0gQN7QZznjtp3+EKZRcWKmf3bn1+sOyU5w0MC1NaQrzGJMRrYFgYLUUAALTBp9EeoqyqSn98d7mqm/uS9w0M0H1fmqJgPz8PV4buILZPH/1i2g168eOPtfLT7ZKkg1VVeuSN/+jmMWn6cvIlcvWSD9HWWhWUlSm7sKlFo2Xcy4mMpKFRkc0tGvGKCg3t3EIBAOhGCB09QFVtrf74znIdPlYtqWkF4PuunaKIYBb/Q8f5envpzsvHKSk2Vn977z1V19Wr0Vq9lJWtvOL9+s6EqxTaQ1ewb3S7teNAiXIKdyt7926VH21/KnMvY5QUG6u0hHilxQ9U38DATq4UAIDuidDRzdU1NOrxFSu1r/nbWC+XS/dMvloDw5mBCOfm0kEJGhQRrgVr1iq/tGkGwE+KivTwq6/pexMmKCk2xsMVXhh1DY3aVrxP2YVNU9tW1da2e56vl5dGDojTmIR4pQ4YoCBaDwEA3di9997bPzg4uHHevHkH5syZ03/SpElHbrrppiPz5s2L+vGPf3wwJCTkpJlRvv71ryfk5uYGWWs1ZMiQmpdeeqmgT58+7c+gcgqEjm7M7XbrmbVrteNASeu+zPFXKamdlSSBsxEZEqKfXz9Vr2Tn6D9btkqSDh+r1u/ffkfTU1OUkZrSLQdHV9fVKXdvkXIKd+uTvXtV09D+1OWBvr4aPXCg0hLilRzXX36MiwIA9EDz58/f1/L4mWeeic7MzCxvL3Q8/fTTe8LDw92S9J3vfGfA7373u6hHHnlk/9m8Fv+SdlPWWv3zw4+UXbi7dd+tl6Zr3JDBHqwKPYm3y6VbLk1XUmyMnl27Xkdqa2Wt1dJNufp0/wF9b+J4hXWD7kWV1dXauGePsgt3a9u+YjW42/9ipm9ggNKax2dcHBPD6t0AAEfUHCnz3bbujURXY5m/2yuiZsT4G3b6h0TUnev1KisrXRkZGUOKi4t93W63eeCBB/ZlZmYeiouLG5mRkVG+fv36UElavHhxfnJy8nHN+jNmzBg0bdq0iqKiIp+SkhKfiRMnDgsLC2s4cUXylsDhdrtVXV3tOpfJUggd3dSbm7doRfOAX0n68iUjdF3yJR6sCD1VyoABmjf9Rj29dp227z8gSfp0/349vPQ1ZU4Yr5QBcR6u8GQHq6qUXbhbOYW7taOk5JRT20aHhGhMQoLSEuI1JLJfrxksDwBwxuY3/jjmTOccrfbRsy9dpheWpen2G3P8M4/9c2RQwMmLyp5o5A33Zbe3f8mSJaExMTH1q1ev3iVJZWVlrQtChYaGNm7evDnvySefjJg9e/bAVatW7WrvGnPnzi1ZsGBB9Jo1a3acagXzm2++edCqVav6XHTRRdVPP/303jMWfAK+yuuG3tv1mf6dndO6PXbQIN1yaboHK0JPFxYUpJ9++UuaPipVLR/Lj9TW6rF3l+ulj7NO2XrQWay1Kjp0SK9tytUvX1um+//9ihZ/9HG7a2kkhIfrK6NH6Vc3Zei3M76ir186RhdFRRI4AACdwt+3QS8sS1NNrY9eWJYmf9/2u/p2VFpaWvW6detCZ82aFffWW28FR0RENLYcmzlzZrkkZWZmlm/cuPG8Zhh6+eWXCw4cOJCbmJhY87e//S3sbJ9PS0c3s6Von/62/r3W7eExMcqccBUfmOA4l8ulr4wepeExMXpmzVodrm6aLe0/W7Zqx4ESfX/iBEWGdN6MaW5r9fnBg60tGvsrK9s9z0hKjI7SmIR4pcXHKzIkpNNqBADgRDV13rr9xpyWlg7V1HmrIy0dp5KSklKbk5Oz7ZVXXunz0EMPxS1fvrzy0UcfLZZ03PhLY0z7zf5nwdvbW7fddlv5o48+GvOjH/3o1ItXtffc831xdJ7CsjI9uXKVGpu/uR3Qt69mX3O1fLy8zvBM4MJJio3RvJsy9Ne16/VJUZEk6bPSUv3ytWX69pVXKH1QgmOv3eB2a8f+A82L9e3RoWPH2j3Py+XSJc1T246OH6g+AQGO1QQAQItTdYFqq+ZIme8PAt9InH3n+81jOr5xXmM6CgoKfKKiohruvvvu8pCQEPfChQsjWo4tWrQo/JFHHtn/3HPPhY0ePbr9+eCbBQUFNVZUVLhiT5iQyO12a9u2bX7Jycm1brdbr776at/ExMSas62T0NFNlB45osfeXdE62054YKDu/dIUBfn5ergy9Eah/v6ac+1kvbVlq17JzlGjtTpWV6cnV63W5OEX65ZLL5Wv94UJw3UNDdpStE/Zu3dr0569OnqKqW39vL2V0jy1bcqAAQr05XcDAND1+IdE1KVdf+fWC3W97OzsgAcffHCAy+WSt7e3feqppwpbjtXW1pqUlJThbrfbvPjii/mnu87MmTMPTp06NTEqKqq+7UBya63uvPPOwVVVVS5rrUlKSjr2f//3f4Wnu1Z7zKkGWHY36enpNisry9NlOOJITY1+/cZ/WruPBPr66qHrr1Nc2Fl3pwMuuF0lpVqwZo3Kqr74AmVgeJh+MGmiYvr0OadrHq2tU+7evU1T2xYVqe4UU9sG+fkpLX6g0uLjdUn/WPkytS0AoBMYY7KttemSlJubW5CamnrQ0zWdKC4ubmRWVlbeqQaGOyE3N7dfamrqoPaO8S90F1fb0KA/LV/ZGji8vVz60eRrCBzoMi6KitS8jBv1t/feb53CeU/5If3ytdd15+XjdOVFQzt0ncPHqrVxd9OK4HnF+9V4isHp4YGBSktomtp2WHS0vJjaFgCALo/Q0YU1ut16evVa7SotldQ0IPZ7E8br4phozxYGnCDIz08/vHqSVn66XYs/+lgNbrdqGxr07Lr1yisu1jfHXSY/H5+Tnldy5EjrQPBdJSU6VbtrTJ9QpSckKC0+XoP7Rehc5gcHAKA3KSoq2uzpGtoidHRR1lr9Y8OH2rhnT+u+2y8bq0sHDfJcUcBpGGM0OWm4LoqK0oLVa1pb59bv+kyflR7U3ZMmaEBYmPYeOqzswkJl796tPeWHTnm9QRERGtPcotG/b9/O+msAAAAHEDq6qGW5n2j19i8Wg7w+OVnXjkjyYEVAxyREhOu/M6Zp0Qcb9P5nTWPWiisq9OBL/5GXb6Ma6rzk439y91JjjIZFRzW3aAxURHDnTb8LAACcRejogtbt3KklGze1bl8+ZIhuTk/zYEXA2fH38dHlYX31+YFiFYX21f78YuVvGKn8DdUaPFYafNlOWXeV+kRFa/zYsRqTEK9R8QMV6u/v6dIBAIADCB1dzCd79+rv733Quj0iNlb/ddUVLP6Hbic6Olq/+dnPtO/wYT34ymta+cRNso3eKsxu0FX/9YJ+cM0Exfj5Kr5/f0+XCgAAHMa0L11IfulBPblqjdzN0xgPDA/T7GsmyZvF/9ANRUVFSZL69+2rqIBwjZiSJy/fBo2YkqfowAiNHTyIwAEAQCe79957+z/88MPRkjRnzpz+S5cuDZGkefPmRR05cuS02WDmzJkDAwMDR5/L69LS0UWUVFbqf5evaF2PICI4SPdeO0UBLHCGHuAnN06UMWs1ZsYmRQaE6/5pEzxdEgAAvd78+fP3tTx+5plnojMzM8tDQkLanbN+7dq1gRUVFeecHQgdXUBldbUefWe5jtQ0rSgf5Oen+669VmGBgR6uDLgwokJC9PvbbvB0GQAAeF7ZNt8jL96eGFCd518dkFQTcusLOxUxou5cL1dZWenKyMgYUlxc7Ot2u80DDzywLzMz81BcXNzIjIyM8vXr14dK0uLFi/OTk5Nr2z53xowZg6ZNm1ZRVFTkU1JS4jNx4sRhYWFhDW1XJJekhoYG/eQnPxnwr3/96/OkpKRzmlKS0OFhtfX1+t/lK1Ry5IgkycfLS3MmX6P+fc9tJWcAAAB4yB/NmDOdUlUbpF8tn6sn1t+j2Vc97v+LirEjg/2Onvna99ns9nYvWbIkNCYmpn716tW7JKmsrKy1X35oaGjj5s2b85588smI2bNnD1y1atWu9q4xd+7ckgULFkSvWbNmR3srmP/mN7+Juv766w8nJCTUn7nQ9jGmw4Ma3W79efUafX6wTFLTlKHfnzhBidFRHq4MAAAATvD3qdET6+9RdX2gnlh/j/x9as7remlpadXr1q0LnTVrVtxbb70VHBER0dhybObMmeWSlJmZWb5x48Zzmou+oKDAZ+nSpWE///nPS86nTkKHh1hrtfD9Dfpkb1Hrvm+Ou0xjEuI9WBUAAACcVFPvr9lXPa4An2OafdXjqqk/v+niU1JSanNycraNHDmy+qGHHoq7//77Y1uOuVxffNQ3xthzuf6GDRsCCwsL/QcNGjQyLi5uZE1NjSs+Pj75bK9D9yoPWbopV2t37mzdvjFlpK4ZfrEHKwIAAMB5OUUXqLaCy7b5zu1ze+Kvr/+lf3VAUk3wrR+d15iOgoICn6ioqIa77767PCQkxL1w4cKIlmOLFi0Kf+SRR/Y/99xzYaNHjz5tH66goKDGiooKV2xs7HH7b7311opbb701t2U7MDBw9O7du7ecbZ2EDg9YvX2HXt3U+t9OV140VF9NO6fZxwAAANCdRIyoC/nBpq2SFHIBLpednR3w4IMPDnC5XPL29rZPPfVUYcux2tpak5KSMtztdpsXX3wx/3TXmTlz5sGpU6cmRkVF1Z84kPxCMNaeU0tLl5Oenm6zsrI8XcYZbdy9R4+vXKWW+54c119zpkyWt4uebgAAAN2BMSbbWpsuSbm5uQWpqakHPV3TieLi4kZmZWXltTcw3Cm5ubn9UlNTB7V3jE+6nWhXSakWrF7TGjgGRUToh1dPInAAAACgR6N7VSfZX1Gh+ctXqK6xaUKByOBg/fjayfL38fFwZQAAAOhpioqKNnu6hrb4ir0THD5WrT++s1xVtU3rsYT4+em+L12rPgEBHq4MAAAAcB6hw2HV9fX63+XLVVpVJUny9fLSnGsnK6ZPqIcrAwAAADoHocNBDW63/rxytQrLyiVJLmN099UTNTQy0sOVAQAAAJ2H0OEQa63+vv59bdm3r3XfzCvGadTAgR6sCgAAAOh8hA6HvJKzUe999lnr9k2jUjVx2DAPVgQAAIDe7t577+3/8MMPR0vSnDlz+i9dujREkubNmxd15MiRdrPBjBkzBsXFxY0cPnz4iOHDh494//33z3pgMrNXOWBF3qd6/ZMvJgyYMCxR00elerAiAAAA4Hjz589v7ZLzzDPPRGdmZpaHhIS42zv3V7/61d677rrr0Lm+FqHjAssuLNTzGz5s3U4dMEAzLx8nY4wHqwIAAECXUHXM98j6vMSAxmP+1V6BNSFXJe1UcGDduV6usrLSlZGRMaS4uNjX7XabBx54YF9mZuahuLi4kRkZGeXr168PlaTFixfnJycn17Z97owZMwZNmzatoqioyKekpMRn4sSJw8LCwhqcWJGc0HEB7TxQoqfXrFPLGu9D+vXT3ZMmyIvF/wAAAHq+/6wdc6ZTqqpd+tXieD2xLE6zbyzy/8WxnJHBAe02Lhxv6oTs9nYvWbIkNCYmpn716tW7JKmsrMyr5VhoaGjj5s2b85588smI2bNnD1y1atWu9q4xd+7ckgULFkSvWbNmx6lWMP+f//mfuN/85jex48ePP/Lkk0/uDQgIsO2ddyp8Gr5A9h0+rPnLV6i+efG/6JAQzbl2svxY/A8AAADN/H3demJZnKprvfTEsjj5+3YgcJxGWlpa9bp160JnzZoV99ZbbwVHREQ0thybOXNmuSRlZmaWb9y4MfhcX+Oxxx4rys/P35Kbm5t36NAhr1/84hcxZ3sNQscFcOjYMf3xneU6WtfUMhbq76/7vjRFof7+Hq4MAAAAXUlNnUuzbyxSgF+jZt9YpJq68/s4npKSUpuTk7Nt5MiR1Q899FDc/fffH9tyzNWmt40x5qxaJtpKSEiod7lcCggIsN/+9rfLsrOzg872GnSvOk/H6ur02DvLVXb0qCTJz9tbP752sqJCWfwPAACgVzlFF6i2gquO+c4NzEv89bcK/au9AmuCr0o7rzEdBQUFPlFRUQ133313eUhIiHvhwoURLccWLVoU/sgjj+x/7rnnwkaPHn30dNcJCgpqrKiocMXGxp50rLCw0CchIaHe7XZryZIlfZOSkqrPtk5Cx3koPnxYD/37bTWYWjXWe8vXv0E/uHqSBvfr5+nSAAAA0BUFB9aFXDdmqySFXIDLZWdnBzz44IMDXC6XvL297VNPPVXYcqy2ttakpKQMd7vd5sUXX8w/3XVmzpx5cOrUqYlRUVH1Jw4kv+WWWwaXl5d7W2vNiBEjji1atKjwVNc5FWPtObe0dCnp6ek2KyvL8dfZvHmzcnJydP0NN+jbjz6lvPUjlL+hWoPHemnkxHzdNW6khg4dquTkZMdrAQAAQOczxmRba9MlKTc3tyA1NfWgp2s6UVxc3MisrKy8Uw0Md0Jubm6/1NTUQe0dY0zHWYqOjtbMmTMV3KePwhMHqeDjm2Qbv6nC7K8rLDFB06dPV3R0tKfLBAAAALoMQsdZioqKkiQF+PgoMiBcSZPz5OXboBFT8hQZEC5JioyM9GSJAAAA6OWKioo2d2Yrx5kwpuM8PHDjRBmzRuk3b1JkQLjunzbB0yUBAAAAXQ6h4zxEhYToD7dN83QZAAAAQJdG9yoAAAAAjiJ0AAAAAHAUoQMAAACAowgdAAAAABzFQHIAAACgk5Q3lvv+e/9/Eqv9yv0DasNrvhYzdWe4V3jd+V53ypQpQ4uLi31ra2td3//+9w80Njaazz//3O/pp5/eK0mPP/54RHZ2duDChQv3PPXUU+ELFiyIrq+vN2lpaUcXLVpU6O3tbCwgdAAAAAAXwJ8O/WnMmc6prfLRO3+8VGv/MkoTvrvJv+K+F0f6Bdef8do/CvtR9umO//Of/yyIjo5urKqqMqNHjx6xcuXK7VdeeeVwSXsl6eWXXw5/6KGHinNycvxffvnl8KysrE/9/PzsHXfcEf/0009H/PCHPyzr6N/zXBA6AAAAgE7i49+gtX8ZpfpqH639yyjd8NAHF+S6v/vd76LfeOONvpK0f/9+nx07dvgNHDiwdsWKFUGXXHJJTX5+vv+1115b9dvf/jZyy5YtgampqUmSVFNT44qKinJ8EUFCBwAAANBJ6mu8NeG7m1paOlRf462OtHSczuuvvx6yZs2akKysrE9DQkLcY8eOvbi6utp18803H1q8eHHY8OHDa6ZOnXrI5XLJWmu+9rWvlf35z38uukB/pQ4hdAAAAAAXwJm6QElSeWjz7b0iAAAGoUlEQVS5b5+f/Cdx2twNzWM6bj3vMR2HDx/26tOnT2NISIh748aN/rm5uUGSdMcddxwaPXr0iM2bN9f+9re/3StJ1113XeVXv/rVi37+858fiIuLazhw4IBXRUWF17Bhw857XMnpEDoAAACAThLuFV73vbhvbL2Q15wxY0bFX/7yl8hhw4aNGDp0aE1qaupRSYqMjGxMTEys3rlzZ8DVV199TJLGjBlTM3fu3KLJkycPc7vd8vHxsY8//vhup0OHsdY6ef1Ok56ebrOysjxdBgAAAHo4Y0y2tTZdknJzcwtSU1MPerqmriA3N7dfamrqoPaOsU4HAAAAAEcROgAAAAA4itABAAAAwFGEDgAAAODcud1ut/F0EZ7WfA/cpzpO6AAAAADO3ZbS0tI+vTl4uN1uU1pa2kfSllOd02NmrzLGlEoq9NDL95PErAVoD+8NnArvDZwO7w+cCu+NriHBWhspSdnZ2VHe3t5/lZSs3vuFvlvSloaGhu+MGTOmpL0Tekzo8CRjTFbLtGlAW7w3cCq8N3A6vD9wKrw30F311jQGAAAAoJMQOgAAAAA4itBxYfzF0wWgy+K9gVPhvYHT4f2BU+G9gW6JMR0AAAAAHEVLBwAAAABHETrOgzHmOmPMdmPMLmPMzzxdD7oOY8xAY8wqY0yeMWarMeZHnq4JXYsxxssYs9EY87qna0HXYYzpa4x52RjzafP/Py73dE3oGowxP27+92SLMWaxMcbf0zUBZ4PQcY6MMV6S/ixpqqQRkm4zxozwbFXoQhok3WetTZI0TtIPeH/gBD+SlOfpItDl/EnSW9ba4ZJSxXsEkowxcZLukZRurU2W5CXpVs9WBZwdQse5Gytpl7U231pbJ+lFSdM9XBO6CGttsbU2p/nxETV9cIjzbFXoKowxAyTdIOmvnq4FXYcxJlTSBEnPSZK1ts5ae9izVaEL8ZYUYIzxlhQoaZ+H6wHOCqHj3MVJ2tNme6/4UIl2GGMGSRot6UPPVoIuZL6kB9S0givQYoikUkl/b+5691djTJCni4LnWWuLJD0qabekYkkV1tp3PFsVcHYIHefOtLOPqcBwHGNMsKRXJM2x1lZ6uh54njFmmqQSa222p2tBl+MtKU3SAmvtaElHJTFeEDLGhKmpN8VgSf0lBRlj7vBsVcDZIXScu72SBrbZHiCaOtGGMcZHTYHjn9baJZ6uB13GlZIyjDEFauqWeY0x5nnPloQuYq+kvdballbRl9UUQoApkj631pZaa+slLZF0hYdrAs4KoePcfSwp0Rgz2Bjjq6YBXa95uCZ0EcYYo6Z+2XnW2sc8XQ+6Dmvtg9baAdbaQWr6/8ZKay3fWELW2v2S9hhjLm7eNVnSNg+WhK5jt6RxxpjA5n9fJotJBtDNeHu6gO7KWttgjPmhpLfVNIvE36y1Wz1cFrqOKyV9U9JmY8ym5n0/t9a+6cGaAHR9syX9s/nLrHxJd3m4HnQB1toPjTEvS8pR0+yIG8XK5OhmWJEcAAAA+P/bu3tXH8M4juPvD0qe8lAsBsKC8riRUv4Bw5HykMwWmxQpu1ExEoOIxSSGUwYdkYeSyaSURXQU6fgaXAPKQbnOye39mu7ft+v+dl3L7+7zu667n7ryeJUkSZKkrgwdkiRJkroydEiSJEnqytAhSZIkqStDhyRJkqSuDB2SpEkl2Znk5nTPQ5L07zJ0SJIkSerK0CFJA5HkQJKxJI+SnE8yM8l4kjNJHia5k2RpG7spyb0kT5LcSLK41dckuZ3kcbtndWs/P8m1JM+TXG7/iixJ0m8xdEjSACRZC+wFtlfVJmAC2A/MAx5W1RZgFDjVbrkIHKuqDcDTb+qXgbNVtRHYBrxq9c3AUWAdsArY3n1RkqTBmDXdE5Ak/RW7gK3A/bYJMQd4DXwGrrQxl4DrSRYCi6pqtNUvAFeTLACWV9UNgKr6AND6jVXVy/b5EbASuNt/WZKkITB0SNIwBLhQVce/KyYnfxhXv+jxMx+/uZ7A54ck6Q94vEqShuEOMJJkGUCSJUlW8PV7fqSN2Qfcraq3wJskO1r9IDBaVe+Al0l2tx6zk8yd0lVIkgbJX6okaQCq6lmSE8CtJDOAT8AR4D2wPskD4C1f3/sAOASca6HiBXC41Q8C55Ocbj32TOEyJEkDlarJdtolSf+yJONVNX+65yFJ+r95vEqSJElSV+50SJIkSerKnQ5JkiRJXRk6JEmSJHVl6JAkSZLUlaFDkiRJUleGDkmSJEldGTokSZIkdfUFlVIfQ2bkw+IAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 864x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib\n",
    "plt.rcParams['figure.figsize'] = (10, 6) # 设置figure_size尺寸\n",
    "plt.rcParams['image.interpolation'] = 'nearest' # 设置 interpolation style\n",
    "plt.rcParams['image.cmap'] = 'gray' # 设置 颜色 style\n",
    "plt.figure(figsize=(12, 8))\n",
    "\n",
    "x=range(0,max_epk)\n",
    "colo = ['grey', 'cadetblue', 'red', 'tan', 'darkorange', 'lightpink', 'lightgreen']\n",
    "for i in range(1,7):\n",
    "    label = 'ave' if i==6 else f'split {i}'\n",
    "    plt.plot(x,single[i],label=label,linewidth=3,color=colo[i],marker='o',markerfacecolor='blue',markersize=4)\n",
    "    for a, b in zip(np.arange(max_epk), single[i]):\n",
    "        plt.text(a, b, (a,round(b,3)), ha='center', va='bottom', fontsize= 2)\n",
    "\n",
    "plt.xlabel('epoch')\n",
    "plt.ylabel('F-scores')\n",
    "plt.title('Fold F-score')\n",
    "plt.legend(bbox_to_anchor=(1.005, 0), loc=3, borderaxespad=0.)\n",
    "print(plt.axes)\n",
    "xmin, xmax, ymin, ymax = plt.gcf().axes[0].axis()\n",
    "plt.text(xmax, (ymax), \"python\", size=20, rotation=0.,\n",
    "        ha=\"left\", va=\"bottom\",\n",
    "        bbox=dict(boxstyle=\"round\",\n",
    "        ec=(1., 1, 1),\n",
    "        fc=(1., 1, 1),\n",
    "        pad=0.2\n",
    "                 )\n",
    "        )\n",
    "\n",
    "plt.savefig(\"tessssssss.pdf\", format='pdf',pad_inches=5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
